MEMOO
MEMOO
Published on 2025-04-21 / 3 Visits
0
0

Python虚拟环境

摘要:在本教程中,你将学习 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 模块来创建新的虚拟环境。



Comment