Python 虚拟环境 venv 入门:给每个项目一个干净的依赖空间
刚开始学 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 等更快的依赖管理工具。
- 点赞
- 收藏
- 关注作者
评论(0)