Python 虚拟环境 venv 入门:给每个项目一个干净的依赖空间

举报
yd_271806766 发表于 2026/10/23 06:10:38 2026/10/23
【摘要】 刚开始学 Python 的人,常常遇到这样的问题:项目 A 需要 requests 2.25,项目 B 需要 requests 2.31,装在同一个系统环境里就互相打架;或者在云服务器上直接 pip install,结果把系统自带的工具搞坏。解决办法就是虚拟环境(virtual environment):为每个项目单独准备一份独立的 Python 解释器和依赖目录。Python 3.3 以后...

刚开始学 Python 的人,常常遇到这样的问题:项目 A 需要 requests 2.25,项目 B 需要 requests 2.31,装在同一个系统环境里就互相打架;或者在云服务器上直接 pip install,结果把系统自带的工具搞坏。解决办法就是虚拟环境(virtual environment):为每个项目单独准备一份独立的 Python 解释器和依赖目录。Python 3.3 以后自带 venv 模块,不用额外安装任何东西。


一、创建虚拟环境

进入项目目录,执行:

python3 -m venv .venv

这会在当前目录生成一个 .venv 文件夹,里面有独立的 python 和 pip。名字可以随意取,.venv 是社区常见约定。如果提示缺少 ensurepip,在 Debian/Ubuntu 上先执行 sudo apt install python3-venv。


二、激活与退出

Linux/macOS:source .venv/bin/activate

Windows PowerShell:.venv\Scripts\Activate.ps1

激活后命令行前面会出现 (.venv) 提示,此时 which python 指向的是 .venv 里的解释器。用完后输入 deactivate 即可退出。


三、安装依赖并固化版本

激活后 pip install requests flask,装的包只会进入 .venv。想把当前依赖记录下来,执行:

pip freeze > requirements.txt

换一台机器或者部署到服务器时,只要重新建好 venv,再执行:

pip install -r requirements.txt

就能还原出一模一样的环境。


四、几个实用习惯

1. 不要把 .venv 提交到 Git,在 .gitignore 里加一行 .venv/。它体积大,而且和具体机器绑定,真正需要共享的是 requirements.txt。

2. 不要用 sudo pip。虚拟环境内本来就有写权限,用 sudo 反而会把包装到系统目录。

3. 不需要激活也能运行:直接写 .venv/bin/python app.py,在 systemd 服务或定时任务里特别好用,因为这些场景下没有交互式 shell 去执行 activate。

4. 项目搬家后路径变化,venv 里的脚本可能失效,最简单的做法是删掉 .venv 重新创建,几十秒就能重建。


五、常见问题

如果 pip install 很慢,可以临时指定国内镜像,例如 pip install -i https://repo.huaweicloud.com/repository/pypi/simple requests(华为云提供了 PyPI 镜像)。如果不确定当前用的是哪个 pip,运行 pip -V,输出路径里应当包含你的 .venv 目录。


小结

虚拟环境的核心思想很简单:一个项目一个环境,依赖写进 requirements.txt。养成这个习惯后,无论在本地开发还是部署到云服务器,都能少掉很多“在我机器上明明可以跑”的麻烦。下一步可以继续了解 pip-tools、uv 等更快的依赖管理工具。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。