在本教程中,我们将介绍如何在 CentOS 上设置 Python 虚拟环境。 Python 虚拟环境可以将 Python 包安装到一个独立的 Python 生态系统中,该生态系统与系统的默认 Python 框架完全分离。 这意味着您不必担心覆盖任何可能默认为系统上现有 Python 版本的当前包的安装。
使 Python 如此令人愉快的另一个突出方面是其封装和管理依赖项的自然能力。 在任何 Python 项目中集成依赖项的主要方法是使用虚拟环境。 此外,您可以轻松地将项目的特定依赖项直接拉入您的虚拟环境,从而实现附加功能。 我们将探索这个想法以及如何在您的个人服务器上启用虚拟环境。
飞行前检查
- 这些说明在 Liquid Web Self-Managed CentOS 8 服务器上以 root 用户身份执行。
- 这些说明适用于 CentOS 7 或 8 服务器。
- 这些说明假定您已经在您的服务器上安装了 Python 2 和 Python 3 3.3 或更高版本(带有 pip)。 如果您正在寻找有关如何在您的 CentOS 7 机器上安装 Python 3 的说明,请查看本教程!
文夫
从 Python 3.3 及更高版本开始,Python 标准库中包含了一个名为 Venv 的模块。 Venv 模块允许我们在基础 Python 安装的同时创建虚拟环境。 这意味着我们不必为我们的项目引入另一个第三方包或其他依赖项来启动和运行替代 Python 虚拟环境。
第 1 步:更新环境
为了确保我们在包方面使用最新的环境,我们可以运行以下命令:
[root@centos8 ~]# yum update -y
第 2 步:创建虚拟环境
现在环境是最新的,我们可以继续创建虚拟环境:
[root@centos8 ~]# python3 -m venv python3-virtualenv
你有它! 利用 Venv 模块,我们刚刚创建了一个 Python 虚拟环境。
第 3 步:激活虚拟环境
Python 虚拟环境的奇妙之处在于它提供了对依赖管理的控制。 在我们重新激活我们创建的新虚拟环境之前,让我们检查一下系统的 Python 3 上安装了哪些包。
[root@centos8 ~]# 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 虚拟环境。
[root@centos8 ~]# source python3-virtualenv/bin/activate
(python3-virtualenv) [root@centos8 ~]#
您会注意到 (python3-virtualenv) 现在位于命令提示符之前。 这表明 Python 虚拟环境处于活动状态。 我们还可以在虚拟环境运行时通过运行以下命令来验证 Python 的版本:
(python3-virtualenv) [root@centos8 ~]# python --version
Python 3.6.8
现在,让我们继续在我们的虚拟环境中安装一个包并升级 pip:
(python3-virtualenv) [root@centos8 ~]# 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) [root@centos8 ~]# 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) [root@centos8 ~]# deactivate
[root@centos8 ~]#
虚拟环境
在某些情况下,可能需要使用不包含 Venv 模块的 Python 版本。 这就是 virtualenv 包发挥作用的地方。 Virtualenv 是一个第三方 Python 模块,可用于创建新的虚拟 Python 环境,其行为与通过 Venv 模块创建的环境几乎相同。
需要注意的是,虽然 Venv 模块比 virtualenv 更精简,但 virtualenv 功能更丰富。 virtualenv 提供的其中一项功能是能够指定应使用哪个 Python 版本的虚拟环境。
第 1 步:安装 Virtualenv
在这种情况下,我们将使用 Python 2 安装。 安装 virtualenv 就像通过 pip 安装任何其他 Python 包一样简单。
[root@centos8 ~]# 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 的虚拟环境。
[root@centos8 ~]# 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 虚拟环境都是一样的。
[root@centos8 ~]# source python2-virtualenv/bin/activate
(python2-virtualenv) [root@centos8 ~]#
现在,我们可以验证我们正在运行的 Python 版本。
(python2-virtualenv) [root@centos8 ~]# python --version
Python 2.7.15
我们还可以在虚拟环境处于活动状态时继续安装软件包。
(python2-virtualenv) [root@centos8 ~]# 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) [root@centos8 ~]# 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
再一次,我们看到的唯一包是我们安装的 requests 包及其依赖项。 使用 virtualenv 创建的虚拟环境也以与使用 Venv 创建的相同的方式停用:
(python2-virtualenv) [root@centos8 ~]# deactivate
[root@centos8 ~]#
Save 今天大!
利用虚拟 python 环境可以让您灵活和多功能地轻松开发和扩展基于 Web 的应用程序! 此外,随着您的流量和互动与用户群的增加,我们的服务器可以灵活地随着您的业务扩展和发展!
给我们打电话 800.580.4985,或打开 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问之一交谈,了解您今天如何利用这些技术!