什么是virtualenv,为什么我要使用一个?

什么是virtualenv,为什么我要使用一个?,第1张

什么是virtualenv,为什么我要使用一个?

与系统Python和库一起运行会将您限制为OS提供商选择的一个特定Python版本。试图在一个Python安装上运行所有Python应用程序,可能会导致库集合之间发生版本冲突。对系统Python的更改也有可能破坏依赖于它的其他OS功能。

虚拟环境或“
virtualenvs”
是轻量级的,自包含的Python安装,旨在以最少的麻烦进行设置,并且无需大量的配置或专业知识即可“正常工作”。

virtualenv
避免了全局安装Python软件包的需要。当virtualenv处于活动状态时,
pip

将在环境中安装软件包,这不会以任何方式影响基础Python的安装。

在Python 3.3或更高版本中,您可以按以下方式创建virtualenv:

$ python3 -m venv ENV_DIR

对于Windows,您应该替换

python3
为python.exe的完整路径:

>C:Python34python.exe -m venv ENV_DIR

(这是典型的Python安装;您的系统可能有所不同。)

在旧版本的Python(包括Python 2)中,以下命令之一在大多数情况下应该可以运行:

$ virtualenv ENV_DIR$ venv ENV_DIR$ pyvenv ENV_DIR$ pyvenv3 ENV_DIR

ENV_DIR
应该是一个不存在的目录。该目录可以具有任何名称,但是为了使这些说明简单起见,我假设您已经在名为
venv
(例如,带有
python3-m venv ./venv
)的目录中创建了virtualenv 。

要在您的virtualenv中工作,请激活它:

$ . ./venv/bin/activate(venv)$

如果您使用Windows系统,请使用以下命令:

$ venvscriptsactivate

(venv)
在shell提示让你知道哪些VIRTUALENV您已经激活了,但你可以打开此功能,如果你不喜欢它。您可以运行所有常用的Python命令,它们将在您的virtualenv本地:

(venv)$ pip install requests numpy[...](venv)$ python[...]>>> import requests>>> import numpy as np>>>

python
将运行您在virtualenv中安装的Python版本,因此(例如)您无需键入
python3
即可获取Python3。它运行的Python可以访问所有标准库模块和所有已安装的软件包。进入virtualenv,但(默认情况下)没有安装在系统范围的
site-packages
目录中的任何软件包。

这最后一条规则很重要:通过限制virtualenv仅使用本地安装的软件包,即使下周安装或更新了一些新的系统级软件包,也可以确保完全控制项目使用的依赖项。如果愿意,可以获取已安装软件包的列表:

(venv)$ pip freezerequests==2.13.0numpy==1.12.0(venv)$

pip
也可以解析此格式并从中进行安装,即使在此期间已发布更新,它也将安装相同的版本:

(venv)$ pip freeze >requirements.txt(some-other-venv)$ pip install -r requirements.txt[...](some-other-venv)$ python>>> import requests>>> import numpy as np>>>

您可以通过停用虚拟环境来摆脱它:

(venv)$ deactivate$ python[...]>>> import requestsTraceback (most recent call last):  File "<stdin>", line 1, in <module>importError: No module named 'requests'

您可以创建任意数量的虚拟环境,它们不会互相干扰,也不会干扰您的系统软件包。virtualenv是“目录”,下面是一堆二进制文件和脚本,因此您可以通过删除任何目录的相同方式来删除virtualenv(

rm-rvenv
在Unix上)。如果在删除虚拟环境时将其激活,则可能会使您的shell感到困惑,因此
deactivate
在这种情况下先进行 *** 作可能是一个好主意。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5508007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存