Python venv、pyvenv、pyenv、virtualenv、VirtualEnvRapper、pipenv等之间的区别是什么?
Python 3.3在其标准库中包含了新的包Python venv、pyvenv、pyenv、virtualenv、VirtualEnvRapper、pipenv等之间的区别是什么?,python,virtualenv,virtualenvwrapper,pyenv,python-venv,Python,Virtualenv,Virtualenvwrapper,Pyenv,Python Venv,Python 3.3在其标准库中包含了新的包venv。它的功能是什么?它与所有其他似乎与regex(py)?(v|virtual | pip)?env?初学者建议: 这是我给初学者的个人建议:从学习和使用Python 2和Python 3以及在各种情况下都能使用的工具开始,一旦开始需要其他工具,就学习它们 不在标准库中的PyPI包: 是一个非常流行的工具,它为Python库创建隔离的Python环境。如果您不熟悉这个工具,我强烈建议您学习它,因为它是一个非常有用的工具,在本答案的其余部分,我将
venv
。它的功能是什么?它与所有其他似乎与regex(py)?(v|virtual | pip)?env
?初学者建议:
这是我给初学者的个人建议:从学习和使用Python 2和Python 3以及在各种情况下都能使用的工具开始,一旦开始需要其他工具,就学习它们
不在标准库中的PyPI包:
- 是一个非常流行的工具,它为Python库创建隔离的Python环境。如果您不熟悉这个工具,我强烈建议您学习它,因为它是一个非常有用的工具,在本答案的其余部分,我将与它进行比较
env/
),然后修改PATH
环境变量,以自定义bin
目录作为前缀(例如:env/bin/
)。python
或python3
二进制文件的精确副本放在这个目录中,但是python被编程为首先在环境目录中查找与其路径相关的库。它不是Python标准库的一部分,但是PyPA(Python打包机构)正式支持它。激活后,您可以使用pip
在虚拟环境中安装软件包
- 用于隔离Python版本。例如,您可能希望针对Python2.7、3.6、3.7和3.8测试代码,因此需要一种在它们之间切换的方法。一旦激活,它会在
环境变量前面加上路径
,其中有与Python命令匹配的特殊文件(~/.pyenv/fimmers
,Python
)。这些不是Python附带命令的副本;它们是特殊的脚本,根据pip
环境变量或PYENV_version
文件或.Python version
文件动态决定运行哪个版本的Python~/.PYENV/version
还可以使用命令pyenv
简化下载和安装多个Python版本的过程pyenv install
- 是与
同一作者开发的pyenv
插件,允许您方便地同时使用pyenv
和pyenv
。但是,如果您使用的是Python 3.3或更高版本,virtualenv
将尝试运行pyenv virtualenv
(如果可用),而不是Python-m venv
。如果您不想要方便的功能,您可以同时使用virtualenv
和virtualenv
,而不使用pyenv
pyenv virtualenv
- 是对
的一组扩展(请参阅)。它为您提供了类似于virtualenv
,mkvirtualenv
,尤其是lssitepackages
的命令,用于在不同的workon
目录之间切换。如果需要多个virtualenv
目录,此工具尤其有用virtualenv
- 是与
相同的作者为pyenv
开发的插件,可以方便地将pyenv
集成到virtualnvwrapper
中pyenv
- 旨在将
、Pipfile
和pip
组合到命令行上的一个命令中。virtualenv
目录通常位于virtualenv
中,其中~/.local/share/virtualenvs/XXX
是项目目录路径的散列。这与XXX
不同,后者的目录通常位于当前工作目录中virtualenv
用于开发Python应用程序(与库相反)。除了pipenv
,还有其他选择,例如pipenv
,我在这里不列出这些选择,因为这个问题只是关于名称类似的包poetry
是Python3附带的一个脚本,但它有一些问题(更不用说令人困惑的名称了)。在python3.6+中,确切的等价物是pyvenv
python3-mvenv
- 是Python 3附带的一个包,您可以使用
运行该包(尽管出于某种原因,一些发行版将其分离到单独的发行版包中,例如Ubuntu/Debian上的python3-m-venv
)。它的用途与python3-venv
相同,但只有一部分功能()virtualenv
仍然比virtualenv
更受欢迎,特别是因为前者同时支持python2和python3venv
virtualenv
,而是使用标准的附带库venv
。要创建新的虚拟环境,请键入:
$ python3 -m venv <MYVENV>
因此,我会避免使用virtualnvwrapper
和pipenv
pyvenv
已被弃用pyenv
似乎经常在使用virtualenv
的地方使用,但我也会远离它,因为我认为venv
也做pyenv
构建的目的
venv
在shell中创建全新的沙盒虚拟环境,具有用户可安装的库,并且是多python安全的。新鲜因为虚拟环境只从python附带的标准库开始,所以在虚拟环境处于活动状态时,您必须使用pip install
重新安装任何其他库。沙盒,因为这些新的库安装在虚拟环境之外都不可见,所以您可以删除整个环境并重新启动,而无需重新启动
$ otool -L bin/python
python:
@executable_path/../Python (compatibility version 3.4.0, current version 3.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
pyenv local 3.9.0 # to prevent 'interpreter not found' in mkvirtualenv
python -m pip install --upgrade pip setuptools wheel
mkvirtualenv <venvname> -p python3.9 -a <workingdir>
workon <venvname>
python -m pip install --upgrade pip setuptools wheel pipenv
pipenv install -r requirements.txt
pipenv install
poetry add <package> # install single package
poetry remove <package>
poetry install # if you remove poetry.lock poetry will re-calculate versions