Pythonvenv教程展示了如何使用venv模块在Python中使用虚拟环境。
虚拟环境
复杂的应用程序依赖于许多不同的依赖项。各种应用程序可能依赖于一个库,或同一库的不同版本。由于Python无法区分其site-packages
目录中的版本,因此创建了虚拟环境作为解决方案。
包括VisualCode和PyCharm在内的IDE广泛支持虚拟环境。
虚拟环境是一个独立的目录树,其中包含特定版本的Python的Python安装和许多其他包。
setuptools
和pip
等常用安装工具可以在虚拟环境中正常工作。当虚拟环境处于活动状态时,他们会将Python包安装到虚拟环境中,而无需明确告知这样做。
Python虚拟机
venv
模块可以创建具有自己站点目录的轻量级虚拟环境。每个虚拟环境都有自己的Python二进制文件(与用于创建此环境的二进制文件的版本相匹配),并且可以在其站点目录中拥有自己独立的一组已安装Python包。(站点目录是我们安装第三方模块的目录。)
Python创建虚拟环境
接下来我们展示如何创建虚拟环境。
$ python --version Python 3.8.5 $ python -m venv myenv . myenv/bin/activate
这些命令在Linux上创建并激活一个新的虚拟环境。
> py --version Python 3.8.1 > py -m venv myenv > myenv\Scripts\activate
这些命令在Windows上创建并激活一个新的虚拟环境。
$ ls myenv/ bin include lib lib64 pyvenv.cfg share
bin
目录包含与虚拟环境交互的工具。include
目录包含编译Python包的C头文件。lib
目录包含Python版本的副本。它还包括site-packages
子目录。
pyvenv.cfg
是一个配置文件,它存储有关虚拟环境的信息,例如从中克隆环境的原始Python(并将提供标准库)和解释器的版本。
$ cat myenv/pyvenv.cfg home = /usr/bin include-system-site-packages = false version = 3.8.5
这是pyvenv.cfg
文件的示例输出。
Python激活虚拟环境
在我们可以使用虚拟环境之前,我们需要先激活它。
$ python -m venv myenv
我们创建一个名为myenv
的新虚拟环境。
$ . myenv/bin/activate (myenv) $
我们激活虚拟环境。我们可以在提示中看到环境的名称。
(myenv) $ echo $PATH /janbodnar/Documents/prog/python/venv/myenv/bin:/janbodnar/.cargo/bin/:/janbodnar/ Documents/prog/go-workspace/bin/:/janbodnar/.config/composer/vendor/bin/: ...
PATH
环境已更新;虚拟环境的bin
目录位于开头。
(myenv) $ which pip python /root/Documents/prog/python/venv/myenv/bin/pip /root/Documents/prog/python/venv/myenv/bin/python
which
命令返回虚拟环境的pip
和python
的路径。
(myenv) $ deactivate $
使用deactivate
命令,我们终止虚拟环境并返回shell。
Pythonvenv安装包
激活创建的虚拟环境后,pip
工具将包安装到环境中。
(myenv) $ pip list Package Version ------------- ------- pip 20.0.2 pkg-resources 0.0.0 setuptools 46.1.3
我们使用piplist
命令显示可用的包。如我们所见,目前我们只有最少的包。
(myenv) $ pip install requests urllib3
在我们的新环境中,我们安装了requests
和urllib3
模块。
(myenv) $ pip list Package Version ------------- --------- certifi 2020.6.20 chardet 3.0.4 idna 2.10 pip 20.0.2 pkg-resources 0.0.0 requests 2.24.0 setuptools 46.1.3 urllib3 1.25.10
我们再次列出可用的包。除了requests
和urllib3
模块之外,我们还通过这两个已安装的模块安装了其他模块。
(myenv) $ pip freeze --local | xargs pip uninstall -y
要进入干净状态并删除所有已安装的软件包,我们可以执行此命令。
(myenv) $ deactivate $
要跳出虚拟环境,我们使用deactivate
命令。
$ pip list Package Version ---------------------------- -------------- adblockparser 0.7 AdvancedHTTPServer 2.2.0 aiocmd 0.1.2 aiodns 2.0.0 aiohttp 3.6.2 aioredis 1.3.1 aiowinreg 0.0.3 ajpy 0.0.4 alembic 1.4.2.dev0 aniso8601 8.0.0 apispec 3.3.1 apispec-webframeworks 0.5.2 APScheduler 0.0.0 asciitree 0.3.3 asn1crypto 1.4.0 ...
在虚拟环境之外,我们指的是标准的Python安装。它自然有更多的包。
$ rm -rf myenv/
如果我们不再需要虚拟环境,我们可以简单地删除它的目录。
在本教程中,我们使用venv
创建了Python虚拟环境。
阅读Python教程或列出所有Python教程。