news 2026/9/6 6:28:43

【python】虚拟环境与依赖管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【python】虚拟环境与依赖管理

文章目录

  • 虚拟环境工具对比
  • 创建虚拟环境
  • 激活与退出虚拟环境
  • 在虚拟环境中安装包
  • 查看已安装的包
  • pip 常用命令
  • 删除虚拟环境
  • 参考资料
  • 碎碎念限时返场

虚拟环境是 Python 中的一个工具,用于为每个项目创建独立的运行环境。在虚拟环境中,Python 解释器及其相关的库都被隔离开来,这样不同的项目就能拥有自己独立的依赖,而不会相互干扰。每个虚拟环境都包含了特定版本的 Python 解释器以及所需的库,可以避免因版本冲突而导致的依赖问题。

pip是 Python 的包管理工具,负责安装、升级、卸载 Python 包。虚拟环境则是一个隔离的空间,可以让你在其中使用pip安装包,而这些包只会影响当前虚拟环境,不会干扰其他环境或系统环境。因此,pip和虚拟环境结合使用,能够更好地管理项目的依赖和版本控制。

虚拟环境工具对比

  1. venv
python -m venv myenv source myenv/bin/activate # Linux/Mac myenv\Scripts\activate.bat # Windows

优点:

  • 操作简单

  • 轻量级

缺点:

  • 依赖管理全靠pip,版本冲突无力处理

  • 创建环境速度慢(尤其大型项目)

  • 无法管理 python 版本,环境由固定版本创建

  1. conda
conda create -n myenv python=3.9 conda activate myenv

优点:

  • 功能强大,跨语言依赖管理

  • 环境隔离彻底,可管理python版本和锁定依赖

缺点:

  • 有时存在 conda-forge 和默认频道包冲突

  • 体积巨大,速度慢

  • 包更新策略保守,频道(如conda-forge)的包版本可能滞后

  1. uv
uv venv myenv source myenv/bin/activate uv pip install -r requirements.txt

优点:

  • 创建环境速度快

  • 可无缝对接现有工作流

  • 集成 pip-tools 功能,解决版本冲突问题

uv pip compile requirements.in -o requirements.txt

缺点:

  • 作为新工具,成熟度和社区规模不如 pip/conda

  • 不支持非 python 依赖,无法处理 cuda 等底层库

对比总表

创建虚拟环境

python -m venv .venv

这条命令会在当前目录下创建一个名为.venv的文件夹,里面包含独立的 Python 解释器、pip包管理器以及其他必要的文件。目录结构如下:

.venv/ ├── bin/ # (Linux/macOS) 或 Scripts/ (Windows) ├── lib/ ├── pyvenv.cfg └── ...

激活与退出虚拟环境

  1. 激活虚拟环境
.venv\Scripts\activate
  1. 退出虚拟环境
deactivate

在虚拟环境中安装包

虚拟环境激活后,可以通过 pip 安装所需的 Python 包,所有包将被安装到当前虚拟环境中,而不会影响全局 Python 环境。

  • 安装包:

可以使用 pip install 命令安装单个包。例如,要安装 requests 包:

pip install requests
  • 安装指定版本的包:

有时候可能需要安装某个包的特定版本,可以通过 == 来指定版本号。例如,安装 requests 的 2.25.1 版本:

pip install requests==2.25.1
  • 安装多个包:

如果需要同时安装多个包,可以将包名空格分隔,例如:

pip install requests numpy pandas
  • 从 requirements.txt 文件安装:

如果已经有一个列出项目依赖的 requirements.txt 文件,可以一次性安装文件中列出的所有包及其版本。例如:

pip install -r requirements.txt

查看已安装的包

查看虚拟环境中已安装的包及其版本:

pip list

pip 常用命令

pip 提供了一些常用命令来管理包的安装、卸载和查询。以下是最常用的几个命令及其功能:

命令作用
pip install <package>安装指定的包
pip install <package>==<version>安装指定版本的包
pip uninstall <package>卸载指定的包
pip freeze查看当前虚拟环境中安装的包及版本
pip freeze > requirements.txt
(不存在就创建,存在就覆盖。如果只想追加不覆盖就用>>
将当前环境的包及版本保存到requirements.txt文件
pip install -r requirements.txt根据requirements.txt安装包
pip show <package>查看某个包的详细信息
pip list查看已安装的所有包

删除虚拟环境

deactivate rmdir /s /q .venv

参考资料

https://liaoxuefeng.com/books/python/introduction/index.html

【Python】Python 虚拟环境与依赖管理全指南

Python 虚拟环境工具对比:venv、conda、和 uv,我为什么最终选择了 uv?

碎碎念限时返场

学都学了记都记了那就发了吧()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 6:18:31

Agilent安捷伦 8753ES 矢量网络分析仪

Agilent 8753ES是一款30 kHz至3 GHz&#xff08;可选6 GHz&#xff09;的矢量网络分析仪&#xff0c;主要用于射频元件的全面表征。核心特性与技术指标根据搜索结果&#xff0c;8753ES的核心技术参数如下&#xff1a;参数项目 具体指标频率范围 30 kHz - 3 GHz (选件006可扩展至…

作者头像 李华
网站建设 2026/9/6 6:16:58

道观外景拍摄全攻略:从选址踩点到光线构图与素材沉淀

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:16:45

大模型API集成实战:接口契约不一致的排查与适配层设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:16:11

从爆款玩具鸭到机器人关节:低成本电机运动控制系统复刻指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:15:22

AS9100D中英对照Word版制作全流程:从术语统一到实战应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 6:14:47

2026年9月装机配置单:四档高性价比方案与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华