gpt4 book ai didi

python - venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv 等有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 11:59:41 49 4
gpt4 key购买 nike

Python 3.3 在其标准库中包含新包 venv .它有什么作用,它与似乎与正则表达式匹配的所有其他软件包有何不同 (py)?(v|virtual|pip)?env ?

最佳答案

给初学者的建议:
这是我个人对初学者的建议:从学习开始 virtualenv pip ,可以在 Python 2 和 3 以及各种情况下使用的工具,一旦您开始需要它们,就可以选择其他工具。
PyPI 包不在标准库中:

  • virtualenv 是一个非常流行的工具,可以为 Python 库创建隔离的 Python 环境。如果您不熟悉这个工具,我强烈建议您学习它,因为它是一个非常有用的工具,我将在本答案的其余部分与它进行比较。

  • 它的工作原理是在目录中安装一堆文件(例如: env/ ),然后修改 PATH环境变量以自定义前缀 bin目录(例如: env/bin/ )。 python 的精确副本或 python3二进制文件放在这个目录中,但 Python 被编程为首先在环境目录中查找与其路径相关的库。它不是 Python 标准库的一部分,但受到 PyPA(Python Packaging Authority)的正式祝福。激活后,您可以使用 pip 在虚拟环境中安装软件包。 .
  • pyenv 用于隔离 Python 版本。例如,您可能想要针对 Python 2.7、3.6、3.7 和 3.8 测试您的代码,因此您需要一种在它们之间切换的方法。激活后,它会添加前缀 PATH环境变量 ~/.pyenv/shims ,其中有与 Python 命令( pythonpip )匹配的特殊文件。这些不是 Python 提供的命令的副本;它们是特殊的脚本,可以根据 PYENV_VERSION 动态决定运行哪个版本的 Python。环境变量,或 .python-version文件,或 ~/.pyenv/version文件。 pyenv还可以使用命令 pyenv install 简化下载和安装多个 Python 版本的过程。 .
  • pyenv-virtualenv pyenv 的插件与 pyenv 的作者相同, 允许您使用 pyenvvirtualenv同时方便。但是,如果您使用 Python 3.3 或更高版本,pyenv-virtualenv将尝试运行 python -m venv如果可用,而不是 virtualenv .您可以使用 virtualenvpyenv一起没有pyenv-virtualenv ,如果您不想要便利功能。
  • virtualenvwrapper 是对 virtualenv 的一组扩展(见 docs)。它为您提供类似 mkvirtualenv 的命令, lssitepackages ,尤其是 workon用于在不同的 virtualenv 之间切换目录。如果您想要多个 virtualenv,此工具特别有用。目录。
  • pyenv-virtualenvwrapper pyenv 的插件与 pyenv 的作者相同, 方便整合 virtualenvwrapper进入 pyenv .
  • pipenv 旨在结合 Pipfile , pipvirtualenv成命令行上的一个命令。 virtualenv目录通常放在 ~/.local/share/virtualenvs/XXX , 与 XXX是项目目录路径的哈希值。这与 virtualenv 不同,其中目录通常位于当前工作目录中。 pipenv旨在用于开发 Python 应用程序(而不是库)。有替代 pipenv ,例如 poetry ,我不会在这里列出,因为这个问题只与名称相似的包有关。

  • 标准库:
  • pyvenv (不要与上一节中的 pyenv 混淆)是 Python 3 附带的脚本,但 deprecated in Python 3.6因为它有问题(更不用说令人困惑的名称)。在 Python 3.6+ 中,完全等效的是 python3 -m venv .
  • venv 是 Python 3 附带的包,您可以使用 python3 -m venv 运行它(尽管出于某种原因,一些发行版将其分离到一个单独的发行版包中,例如 Ubuntu/Debian 上的 python3-venv)。它的用途与 virtualenv 相同,但只有其功能的一个子集( see a comparison here )。 virtualenv继续比venv更受欢迎,尤其是因为前者同时支持 Python 2 和 3。
  • 关于python - venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv 等有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573587/

    49 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com