简介
Python 虚拟环境是管理 Python 项目依赖项的重要工具。它们创建了隔离的空间,你可以在其中安装软件包,而不会影响系统的全局 Python 安装。这种隔离有助于防止不同项目之间可能因需要同一软件包的不同版本而产生冲突。
在这个实验中,你将学习如何创建、激活和停用 Python 虚拟环境。这些技能是 Python 开发者的基础技能,将帮助你为项目维护干净、有序且可重现的开发环境。
Python 虚拟环境是管理 Python 项目依赖项的重要工具。它们创建了隔离的空间,你可以在其中安装软件包,而不会影响系统的全局 Python 安装。这种隔离有助于防止不同项目之间可能因需要同一软件包的不同版本而产生冲突。
在这个实验中,你将学习如何创建、激活和停用 Python 虚拟环境。这些技能是 Python 开发者的基础技能,将帮助你为项目维护干净、有序且可重现的开发环境。
在创建 Python 虚拟环境之前,让我们先了解一下它是什么以及为什么它很重要。
Python 虚拟环境是一个隔离的 Python 解释器安装。当你激活一个虚拟环境时,你安装的任何软件包都会被放置在该环境的私有目录中,而不是系统全局的 Python 安装目录中。这种隔离带来了以下几个好处:
Python 3.3 及更高版本包含 venv
模块,这是创建虚拟环境的推荐工具。让我们来创建第一个虚拟环境:
首先,确保你位于项目目录中:
mkdir -p ~/project/python_env_demo
cd ~/project/python_env_demo
通过运行以下命令创建一个名为 myenv
的新虚拟环境:
sudo apt-get update
sudo apt-get install python3.10-venv -y
python3 -m venv myenv
让我们查看一下创建了哪些内容:
ls -la myenv
你应该会看到类似于以下的输出:
total 20
drwxrwxr-x 5 labex labex 4096 Sep 14 10:00 .
drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 ..
drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 bin
drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 include
drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 lib
-rw-rw-r-- 1 labex labex 70 Sep 14 10:00 pyvenv.cfg
venv
命令创建了一个名为 myenv
的目录,其中包含几个子目录。最重要的子目录有:
bin
:包含 Python 解释器、pip 和激活脚本lib
:包含此环境中安装的软件包pyvenv.cfg
:虚拟环境的配置文件现在,你已经成功创建了一个 Python 虚拟环境,随时可以激活并使用它。
现在你已经创建了一个虚拟环境,在使用它之前需要先激活它。激活操作会修改你 shell 的环境变量,使你使用虚拟环境中的 Python 解释器和软件包,而非系统全局的 Python 安装。
确保你位于项目目录中:
cd ~/project/python_env_demo
通过运行以下命令激活虚拟环境:
source myenv/bin/activate
注意你的命令提示符已经改变。现在,提示符开头的括号中会显示虚拟环境的名称:
(myenv) labex:python_env_demo/ $
这个视觉提示能帮助你记住自己正在虚拟环境中工作。
为了确认你的虚拟环境已激活且正常工作,你可以进行以下检查:
查看正在使用的 Python 解释器:
which python
你应该会看到类似以下的输出:
/home/labex/project/python_env_demo/myenv/bin/python
这表明 python
命令现在指向的是你虚拟环境中的 Python 解释器,而非系统全局的解释器。
查看正在使用的 pip(Python 软件包安装器):
which pip
你应该会看到类似以下的输出:
/home/labex/project/python_env_demo/myenv/bin/pip
这确认了你将把软件包安装到虚拟环境中,而不是系统的 Python 环境中。
检查 Python 版本:
python --version
输出将显示你虚拟环境中正在使用的 Python 版本。
现在你已经成功激活了 Python 虚拟环境。你运行的任何 Python 命令以及安装的任何软件包都将使用这个隔离的环境,而不是系统的 Python 安装。
虚拟环境的主要优点之一是能够独立于系统全局的 Python 安装来安装和管理 Python 软件包。让我们来探讨如何在已激活的虚拟环境中安装软件包。
确保你的虚拟环境仍然处于激活状态。你的命令提示符开头应该显示 (myenv)
。如果未激活,请使用以下命令激活它:
source myenv/bin/activate
让我们安装一个名为 requests
的简单软件包,它通常用于发起 HTTP 请求:
pip install requests
你会看到显示下载和安装过程的输出。
通过查看已安装软件包的列表来验证该软件包是否已安装:
pip list
你应该会在列表中看到 requests
及其依赖项:
Package Version
------------------ ---------
certifi 2025.1.31
charset-normalizer 3.4.1
idna 3.10
pip 22.0.2
requests 2.32.3
setuptools 59.6.0
urllib3 2.3.0
让我们创建一个简单的 Python 脚本来测试 requests
软件包:
打开编辑器,在 ~/project/python_env_demo
目录下创建一个名为 test_requests.py
的新文件:
import requests
response = requests.get('https://httpbin.org/get')
print(f"Status Code: {response.status_code}")
print(f"Content Type: {response.headers['content-type']}")
print("\nResponse Body Preview:")
print(response.text[:300] + "...")
保存文件并运行它:
python test_requests.py
你应该会看到类似于以下的输出:
Status Code: 200
Content Type: application/json
Response Body Preview:
{
"args": {},
"headers": {
"Accept": "_/_",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.32.3",
"X-Amzn-Trace-Id": "Root=1-67ca4e9a-3b65928a0af016e74bc867b7"
},
"origin": "47.251.8.222",
"url": "https://httpbin.org/g...
这表明 requests
软件包已成功安装到你的虚拟环境中,并且可以正常工作。
当你完成在虚拟环境中的工作后,可能希望回到系统的全局 Python 环境。这个过程称为停用。
确保你的虚拟环境当前处于激活状态。你的命令提示符开头应该显示 (myenv)
。
要停用虚拟环境,只需运行:
deactivate
注意你的命令提示符已恢复正常。(myenv)
前缀已消失:
labex:python_env_demo/ $
为了确认你的虚拟环境已停用,并且你已回到使用系统 Python 的状态,请运行以下检查:
检查正在使用的 Python 解释器:
which python3
你应该会看到类似以下的输出:
/usr/bin/python3
这表明 python3
命令现在指向系统全局的 Python 解释器。
尝试运行我们之前创建的脚本:
python3 test_requests.py
根据 requests
软件包是否安装在你的系统 Python 中,你可能会看到一个错误:
Traceback (most recent call last):
File "/home/labex/project/python_env_demo/test_requests.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
这个错误的出现是因为 requests
软件包安装在你的虚拟环境中,而不是系统 Python 中。这正是虚拟环境的主要优点之一——为不同项目隔离软件包。
如果你需要再次处理你的项目,可以轻松地重新激活虚拟环境:
source myenv/bin/activate
你的命令提示符将再次显示 (myenv)
,表明虚拟环境已激活。
以下是我们介绍过的命令的快速参考:
命令 | 描述 |
---|---|
python3 -m venv myenv |
创建一个名为 "myenv" 的新虚拟环境 |
source myenv/bin/activate |
激活虚拟环境 |
pip install package_name |
在活动的虚拟环境中安装一个软件包 |
pip list |
列出活动虚拟环境中已安装的软件包 |
deactivate |
停用当前的虚拟环境 |
这些命令构成了使用 Python 虚拟环境的基础,使你能够为项目创建、使用和管理隔离的 Python 环境。
在本次实验中,你已经学习了使用 Python 虚拟环境的必备技能:
venv
模块创建新的虚拟环境这些技能构成了良好 Python 开发实践的基础。通过使用虚拟环境,你可以:
虚拟环境是从初学者到专家的各级 Python 开发者的必备工具。在你继续 Python 学习之旅时,使用虚拟环境将成为你开发工作流程中的自然组成部分。