在 Ubuntu 中安装 Virtualenv2025年3月17日 | 阅读 15 分钟 Virtualenv 简介它是一个用于创建独立 Python 环境的工具。自 Python 3.3 版本以来,virtualenv 的一个子集已通过 **_venv_** 模块被开发到标准库中。该模块并未提供此库的每个命名方面,仅提供了一些更突出的方面。
所描述的常见问题间接涉及到版本、依赖和权限。假设我们有一个软件需要 **_LibFoo_** 版本 1,而另一个软件需要版本 2。我们如何使用这些库?如果我们将所有东西都安装到我们的主机 Python(例如,Python 3.8)中,很容易陷入两个包具有冲突要求的境地。 或者如果我们想安装一个软件并保持原样怎么办?如果软件正常工作,对其库或这些库版本的任何修改都可能破坏软件。如果由于没有修改主机 Python 环境的权限而无法将包安装到全局目录(即 **_site-packages_**)中怎么办? 在所有这些情况下,virtualenv 都可以帮助我们。它创建了一个包含其自己的安装目录的环境,这些目录不与其他任何 virtualenv 环境共享库(也不访问全局安装的库)。 Virtualenv 有一个常用命令 它将在 venv 子目录中建立一个与 virtualenv 类似版本的 Python 虚拟环境。命令行工具有一些标志可以改变工具的行为。要查看完整列表,请务必检查 CLI 标志。 这些工具分两个不同的阶段工作
注意:在我们的 virtualenv 中,Python 与用于创建它的 Python 有效地隔离。在 Python 中,虚拟环境由两个必需的元素组成:虚拟环境执行的 Python 解释器,以及一个包含虚拟环境中第三方库的文件夹。 它们与几个虚拟环境分离,这意味着对虚拟环境中依赖项的任何修改都不会影响其他虚拟环境依赖项或系统范围的库。因此,我们可以使用不同的 Python 版本以及相同或不同版本的库创建两个或更多虚拟环境。 为什么要使用 Python 虚拟环境?如果我们在一台设备上拥有多个 Python 项目,这些项目依赖于相同包的不同版本,那么 Python 虚拟环境的使用就成为可能。其他一些定义 Python 虚拟环境基本用例的情况是,如果我们正在生产环境或托管服务器上工作,由于特定要求,我们无法更改系统范围的包。 这些虚拟环境构建了独立的上下文,以隔离不同类型项目所需的依赖项,从而不会与系统范围的包或其他项目冲突。通常,设置任何虚拟环境是分离多个 Python 项目的最佳方法之一,尤其当这些项目具有冲突和不同的依赖项时。 如何使用 Python 虚拟环境?创建 Python 虚拟环境首先,我们需要创建一个项目文件夹并在其中建立一个虚拟环境。然后,启动终端窗口,输入以下命令,并按回车键 现在我们需要应用 venv 命令在项目文件夹中建立一个虚拟环境。命令如下 **_重要提示:_**_ 有两个工具可用于设置虚拟环境,venv 和 virtualenv,我们几乎可以互换使用它们。virtualenv 工具支持以前的 Python 版本,需要借助 pip 命令安装。此外,venv 工具用于 Python 3.3 或更高版本,并已添加到 Python 的标准库中,无需安装。_ 开启 Python 虚拟环境我们需要执行以下命令来开启我们在上述步骤中创建的虚拟环境 正如我们所看到的,在开启虚拟环境后,名称会以括号形式出现在终端提示符的开头。执行 `which python` 命令也是确保此虚拟环境正在运行的一种方式。如果执行此命令,它会显示虚拟环境中 Python 解释器的位置。我们可以使用以下命令查看虚拟环境中的位置 值得注意的是,虚拟环境的 Python 版本与用于创建环境的 Python 版本相似。我们可以使用以下命令查看虚拟环境中的 Python 版本 如何在 Python 虚拟环境中安装包?现在,我们处于一个独立的虚拟环境中,默认情况下只安装了 setup tools 和 pip。让我们通过执行 `pip list` 命令来检查虚拟环境中预安装的包 在我们希望使用 pip 安装软件包之前,我们应该首先将其升级到最新版本。因为我们正在虚拟环境中工作,所以以下命令只升级此环境中的 pip 工具,而不是系统范围或其它虚拟环境中的 pip 工具。 如何重现 Python 虚拟环境?重现任何虚拟环境是非常常见的。首先,我们需要借助 `pip freeze` 命令列出项目中虚拟环境中安装的每个依赖项,如下所示 使用 `pip freeze` 命令的结果与 `pip list` 命令的结果非常相似。但是,它提供了以精确格式安装的软件包列表,以便使用项目所需的相似软件包版本在环境中进行重现。在下一步中,我们将软件包列表导出到文件 `needs.txt` 中。为此,我们需要运行以下命令 上述命令在当前文件夹中创建 `needs.txt` 文件。这个新创建的文件包含每个包及其相同的版本。要查看此文件的内容,我们可以使用以下命令 Python 的发现Python 解释器是我们能够创建虚拟环境的最初要求。它会告诉工具我们想要建立什么样的虚拟环境;可以将其视为实现、架构或版本。如果我们在 Python 3.8 版本下安装 virtualenv,virtualenv 默认将创建 3.8 版本的虚拟环境。 通常,已建立的 Python 虚拟环境不是自包含的。一个完整的 Python 包由多个文件组成,因此无法将整个 Python 再次安装到一个新的文件夹中。相反,虚拟环境是简单的 shell,自身包含的内容很少,几乎所有内容都借用自系统 Python。这意味着,如果我们升级系统 Python,我们的虚拟环境可能会损坏,所以我们需要小心。就 Python 系统而言,它的优点是建立虚拟环境可以很快。 这里我们将定义内置机制。CLI 标志 **_python_** 或 **_p_** 允许我们定义一个 Python 规范符,以表示我们想要哪种虚拟环境;该类型可以是
我们有以下限制
鉴于 virtualenv 规范器将使用以下策略来查找/发现系统可执行文件
创建者 创建者是将虚拟环境配置为参考而不是系统 python 的原因。目前,virtualenv 有两种不同类型的虚拟环境
播种器 播种器将为我们安装一些种子包(一个或多个 wheel、setuptools、pip),使我们能够在创建的虚拟环境中安装额外的 Python 包。目前有两种不同的主要播种机制
轮子 要通过应用程序数据或 pip 机制安装种子包,virtualenv 需要继承目标包的 wheel。这些 wheel 可以从多个位置继承
自动行为可以通过 `no-periodic-update` 配置选项/标志停用。要继承任何包的发布日期,virtualenv 将执行以下操作:
用户可以使用命令行标志 **_extra-search-dir_** 描述一组包含额外 wheel 的本地路径。 查找要应用的 wheel 时,virtualenv 会按以下顺序查找
捆绑的轮子是以上三者的总和。如果这些位置不包含请求的轮子版本或者设置了下载标志,则将使用 pip download 从索引服务器加载可用的最新版本。 分发嵌入式轮子 有时,自定义发行版希望使用自己的 wheel 版本组进行分发,而不是 PyPI 上的单个 virtualenv 版本。这样做的原因是试图使这些包的系统版本与 virtualenv 应用的版本保持同步。在这种情况下,它们应该修补 **_virtualenv.seed.wheels.embed_** 模块,确保提供 **_get_embed_wheel_** 函数。如果它们希望使用 virtualenv 的测试套件进行验证,则需要 MAX、BUNDLE_SUPPORT 和 BUNDLE_FOLDER 变量。 激活器 激活脚本可用,它们将修改我们的 shell 设置,以确保 Python 虚拟环境中的命令优先于我们的系统路径。例如,如果通过我们的 shell 调用 pip,在激活之前它引用的是系统 Python 的 pip,当执行激活后,它应该引用虚拟环境的 pip。 编程接口 Virtualenv 目前只提供 CLI 级别接口。如果我们要从 Python 内部调用 Python 环境,应该使用方法 **_virtualenv.cli_run_**;它需要一个参数 **_args_**,我们可以像在命令行中一样传递选项。 有一些命令行界面参数可以建立一个虚拟环境 参数
返回值 创建会话对象 建立一个 virtualenv 会话(与 cli_run 类似,但不执行创建)。如果我们想知道虚拟环境会是什么样子但不想建立它,请使用此方法 参数
返回值 创建会话对象 说明虚拟环境的创建会话
CLI 界面CLI 标志首先,virtualenv 是一个命令行应用程序。它会更改 shell 中的环境变量以建立一个独立的 Python 环境,因此我们需要任何 shell 来执行它。我们可以输入 virtualenv(应用程序名称),后面跟着可以控制其性质的标志。 每个选项都包含合理的默认值,并且有一个必需的参数,即要建立的虚拟环境的路径/名称。命令行选项的默认值可以通过环境变量或配置文件覆盖。环境变量优先于配置文件的值。 可识别的 virtualenv 选项,以及它们的简短描述和默认值如下所述 virtualenv [选项]
创建者选项
播种器选项
激活器选项
默认值环境变量此外,默认值可以通过环境变量指定。设置键从命令行选项获取,如果有多个标志,则首先检测到的获胜。 配置文件Virtualenv 会查找标准配置文件,即 ini。相同的位置取决于我们正在使用的操作系统,具体取决于平台应用程序配置的定义。当传递 --help 选项时,配置文件位置在输出的末尾提及。设置键从命令行选项获取,其中存在多个标志时,首先检测到的获胜。 扩展功能Virtualenv 允许通过插件系统扩展内置功能。要添加插件,我们需要
在 Ubuntu 中安装 virtualenvVirtualenv 是一个开源的免费工具,用于创建独立的 Python 虚拟环境。它被 Python 开发人员和程序员广泛使用,可以轻松测试其不同的应用程序版本。所有虚拟环境都有自己的 Python 库(与用于创建此环境的二进制版本相同),并且可以在其站点目录中拥有自己独立的已安装 Python 包组。基本的安装工具(如 pip 和 setuptools)可以按预期使用虚拟环境。 步骤 1:先决条件
步骤 2:更新我们的服务器 首先,我们需要通过运行 **_sudo apt update_** 命令来更新系统中的所有软件包。这将使我们的系统软件包与 Ubuntu 存储库中当前可用的版本同步。 如果需要升级任何系统包,我们可以运行 **_sudo apt upgrade_** 命令。 步骤 3:安装 Python3 在此步骤中,我们将使用 **_sudo apt install python3_** 命令安装 Python3 包。它将下载并安装此包及其所有依赖项。 ![]() 步骤 4:安装 pip3 我们将使用 **_sudo apt install python-pip3_** 命令安装当前版本的 python 包管理器,因为我们需要 pip3 来获取 virtualenv。 ![]() 步骤 5:安装 virtualenv 在此步骤中,我们将使用 **_pip3 install virtualenv_** 命令安装 virtualenv。如果使用的是早期版本的 pip,则需要运行 **_pip install virtualenv_** 命令。该命令如下图所示 ![]() 步骤 6:检查版本 我们需要运行 **_virtualenv --version_** 命令来检查 virtualenv 的安装情况。 ![]() 步骤 7:建立虚拟环境 安装过程完成后,我们可以使用 **_virtualenv venv_** 命令建立一个虚拟环境。 ![]() 步骤 8:激活或停用环境 当虚拟环境建立后,可以使用其二进制目录中的脚本来激活或停用它。我们需要运行 **_source venv/bin/activate_** 命令来激活虚拟环境。 我们可以运行 **_deactivate_** 命令来停用虚拟环境。 下一个主题Safari Ubuntu |
我们请求您订阅我们的新闻通讯以获取最新更新。