最近捣鼓安装各种工具的时候,python的库之间的版本冲突,导致一些工具无法正常使用,所以研究了一下Python 虚拟环境的使用方法,喊AI写了一个帮助文档,放在这里给自己备忘。
在现代 Python 开发中,虚拟环境(Virtual Environment,简称 env)是不可或缺的工具。它能帮助开发者有效地管理项目依赖,避免冲突,并确保项目的可移植性。本篇文章将详细介绍 Python 虚拟环境的用途、创建与使用方法、导出与退出方式,以及一些常见注意事项。
1. 虚拟环境的用途
1.1 什么是虚拟环境?
虚拟环境是一个隔离的 Python 运行环境,它允许每个项目独立管理自己的依赖,而不会影响全局 Python 环境或其他项目。
1.2 为什么需要虚拟环境?
- 依赖隔离:
不同项目可能需要不同版本的库。例如:
- 项目 A 需要 Django 3.2。
- 项目 B 需要 Django 4.0。 虚拟环境能让它们共存而互不干扰。
-
避免污染全局环境: 全局安装的库可能导致系统环境混乱,甚至出现版本冲突。虚拟环境可避免这些问题。
- 便于迁移和部署: 虚拟环境记录了项目所需的所有依赖,方便将项目迁移到其他机器或服务器。
2. 创建虚拟环境
从 Python 3.3 开始,venv 已成为标准库,用于创建虚拟环境。
2.1 创建虚拟环境
在项目目录下执行以下命令:
python3 -m venv myenv
python3
:调用 Python 解释器。-m venv
:使用 venv 模块创建虚拟环境。myenv
:虚拟环境的目录名,可自定义。
成功后,当前目录下会生成一个名为 myenv 的文件夹,包含以下内容:
bin/
(Linux/macOS)或Scripts/
(Windows):包含虚拟环境的可执行文件。lib/
:存放虚拟环境安装的库。pyvenv.cfg
:虚拟环境的配置信息。
3. 激活和使用虚拟环境
3.1 激活虚拟环境
在创建虚拟环境后,需要激活它,以便运行 Python 和安装库时使用虚拟环境的环境。
- Linux/macOS:
source myenv/bin/activate
- Windows:
myenv\Scripts\activate
激活后,终端提示符会变为类似以下形式,表明虚拟环境已激活:
(myenv) $
3.2 在虚拟环境中安装依赖
虚拟环境激活后,可以使用 pip 安装项目依赖。例如:
pip install requests
- 已安装的库会保存在虚拟环境中,不会影响全局环境。
- 通过
pip list
查看当前虚拟环境中的所有依赖。
4. 导出和恢复环境
4.1 导出环境依赖
为了记录项目的所有依赖,通常会将依赖列表导出到 requirements.txt 文件中:
pip freeze > requirements.txt
生成的 requirements.txt 文件内容如下:
requests==2.28.1
numpy==1.23.5
4.2 恢复环境依赖
在迁移或部署时,可以通过 requirements.txt 文件快速恢复依赖:
pip install -r requirements.txt
5. 退出和删除虚拟环境
5.1 退出虚拟环境
执行以下命令可以退出虚拟环境,恢复到全局环境:
deactivate
退出后,终端提示符中的虚拟环境名称会消失。
5.2 删除虚拟环境
虚拟环境本质上是一个文件夹,删除它只需移除对应的目录:
rm -rf myenv
6. 注意事项
6.1 Python 版本一致性
确保创建虚拟环境时的 Python 版本与目标环境兼容。可以通过以下命令指定 Python 版本:
python3.9 -m venv myenv
6.2 虚拟环境大小
虚拟环境包含独立的 Python 解释器和库文件,可能占用较多磁盘空间。通过使用 –system-site-packages 共享全局库,可以节省空间:
python3 -m venv myenv --system-site-packages
6.3 跨平台兼容性
虚拟环境通常绑定当前操作系统。如果需要跨平台(如从 macOS 部署到 Linux),建议使用 requirements.txt 和目标系统重新创建虚拟环境。
6.4 IDE 支持
主流 IDE(如 PyCharm、VS Code)都支持虚拟环境。可以在项目设置中选择虚拟环境作为解释器。