首页 > Python资料 博客日记
Python中的venv虚拟环境详解
2025-01-14 05:30:07Python资料围观9次
venv是Python 内置的用于创建虚拟环境的工具,它可以为每个项目创建一个独立的 Python 环境,避免不同项目之间的依赖冲突。虚拟环境允许每个项目拥有自己的依赖库,而不影响全局的 Python 环境。它是管理 Python 项目依赖和避免版本冲突的重要工具。
1. 什么是虚拟环境?
虚拟环境是一个独立的 Python 环境,它与系统的全局 Python 环境隔离。每个虚拟环境可以有自己的 Python 版本、库和工具,这样不同的项目可以使用不同版本的依赖库,而互不干扰。
python的虚拟环境总有两款:anaconda和venv,anaconda是一个跨平台的python发行版,提供了用于科学计算和数据分析大量的库和工具,有着复杂的依赖项解析和环境管理能力,这个风云以后再单独详细介绍,今天主要讲python内置的venv。先看下图:
.
这就是虚拟环境和系统环境的存在关系,可以很清晰地看出,当虚拟环境01使用python3.8,而虚拟环境使用python3.12时,它们之间又有着各自不同的依赖库时,venv就可以将它们隔离开,保障依赖模块的一致性,实现应用稳定。使用虚拟环境的优点还有:
- 避免依赖冲突:每个项目的依赖都在独立的环境中管理,避免了不同项目间的依赖版本冲突。
- 简化部署:可以轻松复制环境,确保开发、测试和生产环境的一致性。
- 不污染全局环境:不会对全局的 Python 环境或系统级的 Python 库造成影响。
2. 创建虚拟环境
2.1 使用 venv 创建虚拟环境
venv 是 Python 3.3 及以上版本自带的模块,因此无需安装任何额外的库。创建虚拟环境的基本命令如下:
python -m venv <env_name>
其中,<env_name> 是虚拟环境的名称。可以指定一个目录作为虚拟环境的位置,Python 会在该目录下创建虚拟环境。
示例:
# 创建一个名为 "myenv" 的虚拟环境
python -m venv myenv
执行此命令后,myenv 目录会包含以下内容:
- bin/:包含虚拟环境中的可执行文件(如 Python、pip)。
- lib/:包含虚拟环境的 Python 库。
- pyvenv.cfg:虚拟环境的配置文件,包含 Python 版本等信息。
3. 激活虚拟环境
创建虚拟环境后,必须激活它才能在该环境中运行 Python 和安装依赖。
3.1 激活虚拟环境(Windows)
在 Windows 系统中,使用以下命令激活虚拟环境:
myenv\Scripts\activate
成功激活后,你会看到命令提示符发生变化,显示虚拟环境的名称:
(myenv) C:\path\to\project>
3.2 激活虚拟环境(Linux/macOS)
在 Linux 或 macOS 系统中,使用以下命令激活虚拟环境:
source myenv/bin/activate
成功激活后,命令行会显示 (myenv),表示当前处于虚拟环境中:
(myenv) user@host:path/to/project$
4. 使用虚拟环境
在虚拟环境激活后,你可以使用其中的 Python 解释器和 pip 安装依赖库。
4.1 安装依赖库
可以使用 pip 安装项目所需的库,所有库都会安装在虚拟环境中,而不会影响全局 Python 环境。
# 安装 requests 库
pip install requests
安装的依赖将会记录在虚拟环境的 lib/ 目录中,你可以通过 pip freeze 命令查看已安装的库:
pip freeze
输出类似:
makefile
requests==2.32.3
4.2 运行 Python 程序
在虚拟环境中,可以直接运行 Python 程序:
python my_script.py
这里的 python 会指向虚拟环境中的 Python 解释器。
4.3 查看虚拟环境的 Python 版本
每个虚拟环境都有独立的 Python 解释器,你可以通过以下命令查看当前环境使用的 Python 版本:
python --version
4.4 使用 pip 管理依赖
在虚拟环境中,你可以使用 pip 来管理项目的依赖库,安装、升级、卸载库等。
- 安装库:pip install <package>
- 升级库:pip install --upgrade <package>
- 卸载库:pip uninstall <package>
5. 退出虚拟环境
退出虚拟环境可以使用 deactivate 命令。退出后,你的终端将恢复到全局 Python 环境。
deactivate
执行该命令后,你会看到命令行中的 (myenv) 消失,表示已经退出虚拟环境。
6. 导出和导入虚拟环境的依赖
6.1 导出虚拟环境的依赖
使用 pip freeze 命令可以导出当前虚拟环境中已安装的所有依赖库,并保存为 requirements.txt 文件。该文件可以用于在其他环境中重现相同的依赖。
# 导出当前虚拟环境的依赖到 requirements.txt 文件
pip freeze > requirements.txt
requirements.txt 文件中将包含类似以下内容:
requests==2.32.3
6.2 在其他环境中安装依赖
在其他机器或虚拟环境中,可以使用 requirements.txt 文件安装相同的依赖:
# 在另一个虚拟环境中安装依赖
pip install -r requirements.txt
这将根据 requirements.txt 文件中的信息安装所有依赖。
7. 升级虚拟环境中的依赖
当你需要升级虚拟环境中的某个库时,可以使用 pip install --upgrade 命令:
# 升级 requests 库
pip install --upgrade requests
如果你希望升级所有已安装的库,可以执行:
# 升级所有依赖库
pip install --upgrade -r requirements.txt
这样会根据 requirements.txt 中的依赖版本升级所有库。
8. 应用场景
8.1 项目隔离
在多个项目中使用虚拟环境,可以确保每个项目拥有独立的依赖,不同项目间不会发生版本冲突。例如,你的项目 A 使用的是 requests==2.32.3,而项目 B 使用的是 requests==2.25.1,两者之间不会相互干扰。
8.2 依赖管理
通过 venv 和 requirements.txt,可以轻松地将所有依赖库的版本信息记录下来,并在不同环境中重现相同的开发或生产环境,保证项目的可移植性和一致性。
8.3 开发和生产环境的切换
你可以为开发和生产环境创建不同的虚拟环境,以避免开发过程中使用的库与生产环境中的库发生冲突。这种方式有助于确保生产环境的稳定性。
9. 总结
venv 是 Python 中创建和管理虚拟环境的标准工具,它为每个项目提供了独立的环境,避免了库版本冲突和依赖污染。通过本文的介绍,你应该能够:
- 创建、激活和退出虚拟环境;
- 安装、升级和卸载项目依赖;
- 导出和导入依赖清单;
- 使用虚拟环境管理多个项目和开发环境。
venv 是 Python 项目管理中不可或缺的工具,尤其对于多项目开发和团队协作具有重要意义。
标签:
相关文章
最新发布
- 深入了解 AWT 中的 Menu(菜单)组件
- 大数据-215 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn cluster.cluster_centers_ inertia_
- python视频格式转换时,报错:ModuleNotFoundError: No module named ‘moviepy.editor‘
- python谷歌浏览器dino游戏,完整开源代码
- Python 给 Excel 写入数据的四种方法
- 【Python】成功解决AttributeError: ‘list‘ object has no attribute ‘split‘
- 豆包 API 调用示例代码详解-Python版
- 【python GUI】使用python开发一个随机点名系统(包含代码解释)
- python 实现square root平方根算法
- python的包显示已经安装(Requirement already satisfied),一招解决
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程