Python 3.3在其标准库中包含了新软件包venv。它有什么作用?与似乎与regex匹配的所有其他软件包(py)?(v|virtual|pip)?env有何不同?
venv
regex
(py)?(v|virtual|pip)?env
PyPI软件包不在标准库中:
virtualenv是一个非常流行的工具,可为Python库创建隔离的Python环境。如果你不熟悉此工具,我强烈建议你学习它,因为它是非常有用的工具,在本答案的其余部分中,我将对其进行比较。
virtualenv
它的工作原理是在目录(例如:)中安装一堆文件env/,然后修改PATH环境变量以在其之前添加自定义bin目录(例如:)env/bin/。在完全相同的副本python或python3二进制文件放在这个目录中,但是Python编程寻找相对于其路径优先库,环境中的目录。它不是Python标准库的一部分,但是受到PyPA(Python包装管理局)的正式祝福。激活后,你可以使用在虚拟环境中安装软件包pip。
env/
env/bin/
python
python3
pyenv用于隔离Python版本。例如,你可能想针对Python 2.6、2.7、3.3、3.4和3.5测试代码,因此需要一种在它们之间切换的方法。一旦被激活,它的前缀PATH与环境变量~/.pyenv/shims,那里有专用的文件相匹配的Python命令(python,pip)。这些不是Python附带命令的副本。它们是特殊的脚本,它们可以根据PYENV_VERSION环境变量,.python-version文件或~/.pyenv/version文件动态地决定要运行哪个版本的Python 。pyenv使用命令,还可以简化下载和安装多个Python版本的过程pyenv install。
Python 2.6、2.7、3.3、3.4
3.5
~/.pyenv/shims
python,pip
PYENV_VERSION
.python-version
~/.pyenv/version
pyenv install
pyenv-virtualenv是一个插件pyenv由同一作者的pyenv,允许你使用pyenv和virtualenv在同一时间方便。但是,如果你使用的是Python 3.3或更高版本,请pyenv-virtualenv尝试运行python -m venv它(如果有),而不是virtualenv。如果你不希望使用便利功能,则可以在不使用的情况下一起使用virtualenv和。pyenvpyenv-virtualenv
pyenv-virtualenv
pyenv
python -m venv
pyenvpyenv-virtualenv
virtualenvwrapper是的一组扩展virtualenv(请参阅docs)。它为你提供,等命令mkvirtualenv,lssitepackages尤其是workon在不同virtualenv目录之间切换时。如果要多个virtualenv目录,此工具特别有用。
virtualenvwrapper
lssitepackages
workon
pyenv-virtualenvwrapper是pyenv与作者相同的插件pyenv,可以方便地集成virtualenvwrapper到pyenv。
pyenv-virtualenvwrapper
pipenvKenneth Reitz(的作者requests)撰写的,是此列表中的最新项目。它旨在结合Pipfile,pip并virtualenv为在命令行一个命令。该virtualenv目录通常放置在中~/.local/share/virtualenvs/XXX,XXX是项目目录路径的哈希值。这与不同virtualenv,后者的目录通常位于当前工作目录中。
pipenvKenneth Reitz
Pipfile
pip并virtualenv
~/.local/share/virtualenvs/XXX,XXX
《 Python打包指南》建议pipenv在开发Python应用程序(与库相对)时使用。似乎没有任何计划来venv代替virtualenv(#15)。令人困惑的是,它的命令行选项–venv引用的是 virtualenv目录,而不是目录,venv同样,环境变量PIPENV_VENV_IN_PROJECT会影响virtualenv目录的位置 ,而不是venv目录(#1919)。
virtualenv(#15)
PIPENV_VENV_IN_PROJECT
标准库:
pyvenv是Python 3附带的脚本,但在Python 3.6中已弃用,因为它有问题(更不用说混乱的名称了)。在Python 3.6及更高版本中,确切的等效项是python3 -m venv。
python3 -m venv
venv是Python 3随附的软件包,你可以使用它运行python3 -m venv(尽管出于某些原因,某些发行版将其分成了单独的发行版软件包,例如python3-venv在Ubuntu / Debian上)。它的作用与相似virtualenv,并且工作方式非常相似,但是不需要复制Python二进制文件(Windows除外)。如果你不需要支持Python 2,请使用此功能。在撰写本文时,Python社区似乎对此很满意,virtualenv并且我还没有听到太多谈论venv。
python3-venv
Ubuntu / Debian
Windows
这些工具大多相互补充。例如,pipenv集成pip,virtualenv即使pyenv需要的话。和彼此真正替代的唯一工具是venv和virtualenv。
pipenv
pip
给初学者的建议:
这是我对初学者的个人建议:首先学习virtualenv和pip,这些工具可在各种情况下与Python 2和3一起使用,并在需要它们时选择其他工具。