如何在 CentOS 上设置 Python 虚拟环境

在本教程中,我们将介绍如何在 CentOS 上设置 Python 虚拟环境。 Python 虚拟环境可以将 Python 包安装到与您系统的默认 Python 框架完全分离的谨慎 Python 生态系统中。 这意味着您不必担心覆盖可能默认为系统上现有 Python 版本的任何当前包的安装。

使用 Python 如此令人愉悦的另一个突出方面是其封装和管理依赖项的天然能力。 在任何 Python 项目中集成依赖项的主要方法是使用虚拟环境。 此外,您可以轻松地将项目的特定依赖项直接拉入您的虚拟环境中,从而实现附加功能。 我们将探索这个想法以及如何在您的个人服务器上启用虚拟环境。

飞行前检查

  • 这些说明是在 Liquid Web 自我管理的 CentOS 8 服务器上以 root 用户身份执行的。
  • 这些说明适用于 CentOS 7 或 8 服务器。
  • 这些说明假设您已经在服务器上使用 pip 安装了 Python 2 和 Python 3 3.3 或更高版本。 如果您正在寻找有关如何在 CentOS 7 机器上安装 Python 3 的说明,请查看本教程!

静脉

从 Python 3.3 及更高版本开始,Python 标准库中包含了一个名为 Venv 的模块。 Venv 模块允许我们在安装基本 Python 的同时创建虚拟环境。 这意味着我们不必向我们的项目引入另一个第三方包或其他依赖项来启动和运行替代 Python 虚拟环境。

步骤 1:更新环境

为了确保我们在包方面尽可能使用最新的环境,我们可以运行以下命令:

[[email protected] ~]# yum update -y

步骤 2:创建虚拟环境

现在环境是最新的,我们可以继续创建虚拟环境:

[[email protected] ~]# python3 -m venv python3-virtualenv

你有它! 利用 Venv 模块,我们刚刚创建了一个 Python 虚拟环境。

步骤 3:激活虚拟环境

Python 虚拟环境的奇妙之处在于它提供了围绕依赖项管理的控制。 在我们继续激活我们创建的新虚拟环境之前,让我们检查一下系统的 Python 3 上安装了哪些包。

[[email protected] ~]# pip3 freeze asn1crypto==0.24.0 cffi==1.11.5 configobj==5.0.6 cryptography==2.3 decorator==4.2.1 gpg==1.10.0 idna==2.5 iniparse==0.4 netifaces==0.10.6 pciutils==2.3.6 perf==0.1 ply==3.9 pycparser==2.14 pygobject==3.28.3 pyOpenSSL==18.0.0 python-dateutil==2.6.1 python-dmidecode==3.12.2 python-linux-procfs==0.6 pyudev==0.21.0 rhnlib==2.8.6 rpm==4.14.2 schedutils==0.6 six==1.11.0 slip==0.6.4 slip.dbus==0.6.4 syspurpose==1.23.8

如您所见,已经安装了许多软件包。 现在,让我们激活刚刚创建的 Python 虚拟环境。

[[email protected] ~]# source python3-virtualenv/bin/activate (python3-virtualenv) [[email protected] ~]#

您会注意到 (python3-virtualenv) 现在位于您的命令提示符之前。 这表明 Python 虚拟环境处于活动状态。 我们还可以在虚拟环境运行时通过运行以下命令来验证 Python 的版本:

(python3-virtualenv) [[email protected] ~]# python --version Python 3.6.8

现在,让我们继续在我们的虚拟环境中安装一个包,并在我们使用它的同时升级 pip:

 (python3-virtualenv) [[email protected] ~]# pip install -U pip requests Collecting pip  Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)   100% |████████████████████████████████| 1.4MB 832kB/s Collecting requests  Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl Requirement already up-to-date: certifi>=2017.4.17 in ./python3-virtualenv/lib/python3.6/site-packages (from requests) Requirement already up-to-date: idna<2.9,>=2.5 in ./python3-virtualenv/lib/python3.6/site-packages (from requests) Requirement already up-to-date: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./python3-virtualenv/lib/python3.6/site-packages (from requests) Requirement already up-to-date: chardet<3.1.0,>=3.0.2 in ./python3-virtualenv/lib/python3.6/site-packages (from requests) Installing collected packages: pip, requests  Found existing installation: pip 9.0.3   Uninstalling pip-9.0.3:    Successfully uninstalled pip-9.0.3 Successfully installed pip-19.3.1 requests-2.22.0

现在我们来看看虚拟环境中安装的包:

(python3-virtualenv) [[email protected] ~]# pip freeze certifi==2019.11.28 chardet==3.0.4 idna==2.8 requests==2.22.0 urllib3==1.25.7

您应该注意到,该列表比您系统的 Python 3 小得多。这是因为我们刚刚创建的 Python 虚拟环境中安装的唯一包是我们刚刚安装的请求包及其依赖项。 而已! 现在,最后,让我们停用虚拟环境:

(python3-virtualenv) [[email protected] ~]# deactivate [[email protected] ~]#

虚拟环境

在某些情况下,可能需要使用不包含 Venv 模块的 Python 版本。 这就是 virtualenv 包发挥作用的地方。 Virtualenv 是一个第三方 Python 模块,可用于创建新的虚拟 Python 环境,该环境的行为与通过 Venv 模块创建的环境几乎相同。

需要注意的是,虽然 Venv 模块比 virtualenv 更加精简,但 virtualenv 的功能更加丰富。 virtualenv 提供的一个这样的功能是能够指定应该使用哪个 Python 版本的虚拟环境。

第 1 步:安装 Virtualenv

在这种情况下,我们将使用我们的 Python 2 安装。 安装 virtualenv 就像通过 pip 安装任何其他 Python 包一样简单。

[[email protected] ~]# pip2 install virtualenv WARNING: Running pip install with root privileges is generally not a good idea. Try `pip2 install --user` instead. Collecting virtualenv  Downloading https://files.pythonhosted.org/packages/05/f1/2e07e8ca50e047b9cc9ad56cf4291f4e041fa73207d000a095fe478abf84/virtualenv-16.7.9-py2.py3-none-any.whl (3.4MB)   100% |████████████████████████████████| 3.4MB 316kB/s Installing collected packages: virtualenv Successfully installed virtualenv-16.7.9

步骤 2:创建虚拟环境

一旦安装了 virtualenv,我们就可以继续创建一个虚拟环境。 在这种情况下,让我们指定我们希望基于 Python 2 的虚拟环境。

[[email protected] ~]# virtualenv -p $(which python2) python2-virtualenv Running virtualenv with interpreter /usr/bin/python2 Already using interpreter /usr/bin/python2  No LICENSE.txt / LICENSE found in source New python executable in /root/python2-virtualenv/bin/python2 Also creating executable in /root/python2-virtualenv/bin/python Installing setuptools, pip, wheel... done.

步骤 3:激活并验证虚拟环境

接下来,让我们激活虚拟环境。 值得一提的一个方面是,无论是通过 virtualenv 还是 Venv 创建的,激活 Python 虚拟环境都是一样的。

[[email protected] ~]# source python2-virtualenv/bin/activate (python2-virtualenv) [[email protected] ~]#

现在,我们可以验证我们正在运行的 Python 版本。

(python2-virtualenv) [[email protected] ~]# python --version Python 2.7.15

我们还可以在虚拟环境处于活动状态时继续安装软件包。

(python2-virtualenv) [[email protected] ~]# pip install requests DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support Collecting requests  Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl Requirement already satisfied: chardet<3.1.0,>=3.0.2 in ./python2-virtualenv/lib/python2.7/site-packages (from requests) (3.0.4) Requirement already satisfied: idna<2.9,>=2.5 in ./python2-virtualenv/lib/python2.7/site-packages (from requests) (2.8) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./python2-virtualenv/lib/python2.7/site-packages (from requests) (1.25.7) Requirement already satisfied: certifi>=2017.4.17 in ./python2-virtualenv/lib/python2.7/site-packages (from requests) (2019.11.28) Installing collected packages: requests Successfully installed requests-2.22.0

您会在软件包安装的输出开始处注意到弃用警告。 同样,一些遗留软件可能仍然依赖于 Python 2,但就目前而言,所有新项目都应该基于 Python 3。最后,让我们看看 Python 2 虚拟环境中的包列表。

(python2-virtualenv) [[email protected] ~]# pip freeze DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support certifi==2019.11.28 chardet==3.0.4 idna==2.8 requests==2.22.0 urllib3==1.25.7

再一次,我们看到的唯一包是我们安装的请求包及其依赖项。 使用 virtualenv 创建的虚拟环境也以与使用 Venv 创建的方式相同的方式停用:

(python2-virtualenv) [[email protected] ~]# deactivate [[email protected] ~]#

Save 大今天!

利用虚拟 Python 环境可以让您灵活和多功能地轻松开发和发展基于 Web 的应用程序! 此外,随着您与用户群的流量和互动增加,我们的服务器可以灵活地扩展和发展您的业务!

给我们打电话 800.580.4985,或打开一个 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问之一交谈,以了解您今天如何利用这些技术!