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