gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:34 27 4
gpt4 key购买 nike

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

最佳答案

PyPI软件包不在标准库中:


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

它的工作方式是在目录(例如:env/)中安装一堆文件,然后修改PATH环境变量以在其前面加上自定义的bin目录(例如:env/bin/)。 pythonpython3二进制文件的精确副本位于此目录中,但是Python编程为在环境目录中首先查找与其路径相关的库。它不是Python标准库的一部分,但是受到PyPA(Python包装管理局)的正式祝福。激活后,您可以使用pip在虚拟环境中安装软件包。
pyenv用于隔离Python版本。例如,您可能想针对Python 2.7、3.6、3.7和3.8测试代码,因此需要一种在它们之间切换的方法。激活后,它会在PATH环境变量前加上~/.pyenv/shims前缀,其中存在与Python命令匹配的特殊文件(pythonpip)。这些不是Python附带命令的副本。它们是特殊的脚本,它们根据PYENV_VERSION环境变量或.python-version文件或~/.pyenv/version文件即时确定要运行哪个版本的Python。 pyenv还使用命令pyenv install简化了下载和安装多个Python版本的过程。
pyenv-virtualenv是与pyenv相同作者的pyenv插件,使您可以方便地同时使用pyenvvirtualenv。但是,如果您使用的是Python 3.3或更高版本,则pyenv-virtualenv将尝试运行python -m venv(如果可用),而不是virtualenv。如果您不希望使用便捷功能,则可以将virtualenvpyenv一起使用而不使用pyenv-virtualenv
virtualenvwrappervirtualenv的一组扩展(请参见docs)。它为您提供mkvirtualenvlssitepackages,尤其是workon之类的命令,用于在不同的virtualenv目录之间切换。如果要多个virtualenv目录,此工具特别有用。
pyenv-virtualenvwrapper是与pyenv相同作者的pyenv插件,可以方便地将virtualenvwrapper集成到pyenv中。
pipenv旨在将Pipfilepipvirtualenv组合为命令行上的一个命令。通常将virtualenv目录放在~/.local/share/virtualenvs/XXX中,其中XXX是项目目录路径的哈希。这不同于virtualenv,后者通常位于当前工作目录中。 pipenv是在开发Python应用程序(而不是库)时使用的。

截至撰写时,pipenv自2018年11月以来未在Pypi上发布任何版本,并且自2019年11月以来在GitHub上没有提交。文档网站pipenv.org已关闭(#4137),用户正在发布问题询问是否pipenv已死(主要错误报告为#4058,请参见developer response)。有pipenv的替代方案,例如poetry,在此不再赘述,因为此问题仅与名称相似的软件包有关。


标准库:


pyvenv是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。


给初学者的建议:

这是我对初学者的个人建议:首先学习virtualenvpip,它们可在各种情况下与Python 2和3一起使用,并且在需要时选择其他工具。

关于python - venv,pyvenv,pyenv,virtualenv,virtualenvwrapper,pipenv等有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58126927/

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