与系统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在这种情况下先进行 *** 作可能是一个好主意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)