Python venv
最后修改于 2024 年 1 月 29 日
Python venv 教程演示了如何使用 venv 模块在 Python 中创建虚拟环境。
虚拟环境
复杂的应用程序依赖于许多不同的依赖项。各种应用程序可能依赖于某个库,或者同一库的不同版本。由于 Python 无法区分其 site-packages 目录中的版本,因此创建虚拟环境作为一种解决方案。
包括 Visual Code 和 PyCharm 在内的 IDE 对虚拟环境提供了广泛的支持。
一个 虚拟环境 是一个自包含的目录树,其中包含特定 Python 版本的 Python 安装以及许多附加包。
常见的安装工具,如 setuptools 和 pip,在虚拟环境中按预期工作。当虚拟环境激活时,它们会将 Python 包安装到虚拟环境中,而无需显式告知。
Python venv
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 克隆的(该 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。
Python venv 安装包
激活创建的虚拟环境后,pip 工具会将包安装到环境中。
(myenv) $ pip list Package Version ------------- ------- pip 20.0.2 pkg-resources 0.0.0 setuptools 46.1.3
我们使用 pip list 命令显示可用的包。目前,我们只有最少的包。
(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 教程。