摘要:在本教程中,你将学习 Python 虚拟环境以及如何使用 venv
模块来创建虚拟环境。
为什么需要 Python 虚拟环境
在安装 Python 时,Python 会将所有系统包存储在指定的文件夹中。通常,大多数系统包位于 sys.prefix
指定的路径的子文件夹中。要查找此路径,可以导入 sys
模块并显示如下:
import sys
print(sys.prefix)
它(运行上述代码)在 Windows 上会显示类似这样的内容:
C:\python
当你使用 pip
安装第三方包时,Python 会将这些包存储在 site.getsitepackages()
函数指定的不同文件夹中:
import site
print(site.getsitepackages())
它在 Windows 上返回的内容类似于(以下内容):
['C:\\python', 'C:\\python\\Lib\\site-packages']
如果你只有一些仅使用标准 Python 库的项目,那倒还好。然而,当你有一些使用第三方包的项目时,这就会成为一个问题。
假设你有两个项目使用了同一个库的不同版本。由于存储第三方包的位置只有一个,你无法同时保留不同的版本。
一个变通办法是,你可以使用 pip
命令通过安装/卸载包来切换版本。然而,这将非常耗时,并且扩展性不佳。
这就是虚拟环境发挥作用的地方。
什么是 Python 虚拟环境
Python 使用虚拟环境为每个项目创建一个隔离的环境。换句话说,每个项目都将拥有自己的目录来存储第三方包。
如果你有多个项目使用了同一个包的不同版本,你可以将它们存储在单独的虚拟环境中。
自版本 3.3 起,Python 将虚拟环境模块(venv
)作为标准库包含在内。因此,要使用 venv
模块,你应该安装 Python 3.3 或更高版本。
要检查 Python 的版本,你可以使用以下命令:
python --version
使用 venv 模块创建虚拟环境
以下示例展示了如何在 Windows 上创建一个新项目,该项目使用由内置模块 venv
创建的虚拟环境。
首先,创建一个用于托管项目和虚拟环境的新文件夹:
mkdir D:\test_env
cd test_env
第二,在 test_env
文件夹内创建一个名为 .venv
的虚拟环境:
python -m venv .venv
上述命令将创建一个名为 .venv
的新文件夹,其中包含运行 Python 程序所需的所有必要工具和库。
其次,通过运行 project_env/Scripts
目录中的 activate.bat
文件来激活虚拟环境:
.venv\Scripts\activate
执行之后,你会在终端中看到以下内容:
(.venv) D:\test_env>
前缀.venv
)表示你当前处于 .venv
虚拟环境中。
现在,你可以检查 python.exe
位于何处:
where python
这次它返回以下路径:
D:\test_env\.venv\Scripts\python.exe
C:\python\python.exe
C:\Users\<username>\AppData\Local\Microsoft\WindowsApps\python.exe
第一行显示 python.exe
位于 .venv/Scripts
文件夹中。这意味着,如果你在 test_env
中运行 python
命令,将执行 D:\test_env\.venv\Scripts\python.exe
,而不是 C:\python\python.exe
。
第三,显示 test_env
项目的 .venv
虚拟环境中安装的包:
pip list
输出:
Package Version
------- -------
pip 24.3.1
在创建 .venv
虚拟环境时venv
模块已经安装了 pip
包。
第四,在虚拟环境中安装 requests
包:
pip install requests
如果你显示 .venv
虚拟环境中安装的所有包:
pip list
你会看到 requests
包及其依赖项:
Package Version
------------------ ---------
certifi 2025.1.31
charset-normalizer 3.4.1
idna 3.10
pip 24.3.1
requests 2.32.3
urllib3 2.3.0
第五,创建 requirements.txt
文件:
pip freeze > requirements.txt
requirements.txt
文件的内容将如下所示:
certifi==2025.1.31
charset-normalizer==3.4.1
idna==3.10
requests==2.32.3
urllib3==2.3.0
requirements.txt
文件包含项目中使用的 .venv
虚拟环境中安装的所有包及其版本信息。
当你将项目复制到另一台机器时,可以运行 pip install
命令,使用以下命令安装 requirements.txt
文件中列出的所有包:
pip install -r requirements.txt
第六,创建使用 requests
模块的 main.py
文件:
import requests
response = requests.get('https://www.google.com')
if response.status_code == 200:
print(response.text)
要运行 main.py
文件,你可以使用 python
命令:
python main.py
此命令会执行 .venv
中的 python.exe
,并加载在 .venv
虚拟环境中安装的包。
要停用虚拟环境,你可以运行 deactivate
命令:
deactivate
运行后将返回以下内容:
D:\test_env>
现在,你不再看到 (.venv)
前缀了。这意味着你已不在 .venv
虚拟环境中。
总结
虚拟环境为 Python 项目创建一个隔离的环境。
使用
venv
模块来创建新的虚拟环境。