Python 3.3 在其标准库中包含了新包venv. 它有什么作用,它与似乎与正则表达式匹配的所有其他软件包有何不同(py)?(v|virtual|pip)?env?
venv
(py)?(v|virtual|pip)?env
从学习virtualenv和开始pip,这些工具适用于 Python 2 和 3 以及在各种情况下,一旦你开始需要其他工具,就开始使用它们。
virtualenv
pip
现在回答这个问题:这些类似命名的事物之间有什么区别:venv、virtualenv 等?
它的工作原理是在一个目录中安装一堆文件(例如:)env/,然后修改PATH环境变量以使用自定义bin目录作为前缀(例如:)env/bin/。python或二进制文件的精确副本python3放置在此目录中,但 Python 被编程为首先在环境目录中查找与其路径相关的库。它不是 Python 标准库的一部分,但受到 PyPA(Python 打包机构)的正式祝福。激活后,您可以使用pip.
env/
PATH
bin
env/bin/
python
python3
pyenv用于隔离 Python 版本。例如,您可能希望针对 Python 2.7、3.6、3.7 和 3.8 测试您的代码,因此您需要一种在它们之间切换的方法。一旦激活,它会在PATH环境变量前面加上~/.pyenv/shims,其中有与 Python 命令 ( python, pip) 匹配的特殊文件。这些不是 Python 提供的命令的副本;PYENV_VERSION它们是特殊脚本,可以根据环境变量、.python-version文件或文件即时决定运行哪个版本的 Python ~/.pyenv/version。pyenv还可以使用命令来简化下载和安装多个 Python 版本的过程pyenv install。
pyenv
~/.pyenv/shims
PYENV_VERSION
.python-version
~/.pyenv/version
pyenv install
pyenv-virtualenvpyenv是同作者的一个插件pyenv,让你在方便使用pyenv的virtualenv同时。但是,如果您使用的是 Python 3.3 或更高版本,pyenv-virtualenv将尝试运行python -m venv(如果可用),而不是virtualenv. 如果您不想要便利功能,您可以在没有的情况下使用virtualenvand 。pyenv``pyenv-virtualenv
pyenv-virtualenv
python -m venv
pyenv``pyenv-virtualenv
virtualenvwrapper是一组扩展virtualenv(请参阅文档)。它为您提供诸如 、 之类的命令mkvirtualenv,lssitepackages尤其是用于在不同目录workon之间切换的命令。如果您需要多个目录,virtualenv此工具特别有用。virtualenv
virtualenvwrapper
mkvirtualenv
lssitepackages
workon
pyenv-virtualenvwrapperpyenv是同作者的一个插件pyenv,方便集成virtualenvwrapper到pyenv.
pyenv-virtualenvwrapper
pipenv旨在将Pipfile,pip和组合virtualenv成命令行上的一个命令。该virtualenv目录通常放置在 中~/.local/share/virtualenvs/XXX,XXX是项目目录路径的哈希。这与 不同virtualenv,其中目录通常位于当前工作目录中。pipenv用于开发 Python 应用程序(而不是库)。有一些替代品pipenv,例如poetry,我不会在这里列出,因为这个问题只是关于名称相似的包。
pipenv
Pipfile
~/.local/share/virtualenvs/XXX
XXX
poetry
pyvenv
python3 -m venv
python3-venv