Python/虚拟环境

来自 ArchWiki

virtualenv 是一个用于为 Python 应用程序创建隔离工作空间的工具。它有多种优点,例如能够本地安装模块、导出工作环境以及在该环境中执行 Python 程序。

概述

虚拟环境是一个目录,其中安装了一些二进制文件和 shell 脚本。这些二进制文件包括用于执行脚本的 python 和用于在环境中安装其他模块的 pip。还有一些 shell 脚本(分别用于 bash、csh 和 fish)用于激活环境。本质上,虚拟环境模拟了 Python 及其所有所需模块的完整系统安装,而不会干扰应用程序可能运行的任何系统。

在 2017 年,发布了 Pipenv,它管理上述所有工具 - 管理 python 解释器的虚拟环境、包依赖项、它们的激活以及在 Pipfiles 中可重现的版本锁定。

安装

Python 3.3+ 自带一个名为 venv 的模块。对于需要旧版本 Python 的应用程序,必须使用 virtualenv

软件包

安装 以下软件包之一以使用 Python 虚拟环境

对于 Pipenv

用法

所有这三个工具都使用类似的工作流程。

创建

使用 venvvirtualenv 在您的项目目录中创建虚拟环境。请务必从版本控制中排除 venv 目录——pip freeze 的副本就足以重建它。

venv

注意: 此方法取代了 pyvenv 脚本,该脚本已在 python 3.8 中删除。

此工具由 python (3.3+) 提供

$ python -m venv envname

virtualenv

对于 Python 3,请使用 virtualenv,可在 python-virtualenv 中获得。

$ virtualenv envname

激活

使用提供的 shell 脚本之一来激活和停用环境。此示例假定使用 bash。

$ source envname/bin/activate
(envname) $

进入虚拟环境后,可以使用 pip 安装模块,并像往常一样运行脚本。

要退出虚拟环境,请运行 bin/activate 提供的函数

(envname) $ deactivate

Python 版本

默认情况下,虚拟环境是使用系统 Python 创建的。bin/python 二进制文件只是系统 python 的符号链接

$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 15 Jan 29 18:48 envname/bin/python -> /usr/bin/python

如果要在虚拟环境中使用不同的 Python 版本,可以使用 virtualenv-p/--python 选项

$ virtualenv -p 3.8 envname
$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 18 Jan 29 18:48 envname/bin/python -> /usr/bin/python3.8

pypy3 也可以使用

$ virtualenv -p pypy3 envname

virtualenvwrapper

virtualenvwrapper 通过公开几个有用的命令来创建、激活和删除虚拟环境,从而允许与虚拟环境进行更自然的命令行交互。此软件包是 python-virtualenv 的包装器。

安装

安装 python-virtualenvwrapper 软件包,并将以下行添加到您的 ~/.bashrc

~/.bashrc
export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh

source /usr/bin/virtualenvwrapper.sh 可能会在启动新 shell 时导致一些减速。要解决此问题,请尝试使用 source /usr/bin/virtualenvwrapper_lazy.sh,它将在首次调用 virtualenvwrapper 函数时加载 virtualenvwrapper。

重新打开您的控制台以应用更改。WORKON_HOME 目录将自动创建。

基本用法

有关用法(和扩展功能),请参阅 https://virtualenvwrapper.readthedocs.io/en/latest/

创建虚拟环境(除了 -a-i-r-h 之外的所有命令行选项都直接传递给 virtualenv,因此您可以使用 -p 选择 Python 版本)

$ mkvirtualenv envname

激活虚拟环境

$ workon envname

在虚拟环境中安装一些软件包(例如,Django

(envname) $ pip install django

完成操作后,离开虚拟环境

(envname) $ deactivate

Pipenv

pipenv 通过提供一个程序来执行上述所有工具的功能,从而实现更好管理的 CLI 交互。

安装

安装 python-pipenv 软件包。

基本用法

所有命令都可以在项目文件夹中执行,pipenv 将识别具体情况——目录中是否存在 virtualenv,定位它,并在执行 pipenv 时在特定的虚拟解释器上运行。

更多信息请访问 [1], [2], [3]

参见