Python 虚拟环境入门:用 venv 告别“装了包却跑不起来”
刚学 Python 的同学经常遇到这样的情况:在一个项目里装了某个版本的库,结果另一个项目突然报错;或者在自己电脑上能跑的脚本,换台机器就提示找不到模块。这些问题大多源于所有项目共用同一个全局 Python 环境。解决办法很简单:给每个项目单独建一个虚拟环境。Python 3 自带的 venv 模块就能做到,不需要额外安装工具。
一、创建虚拟环境
在项目根目录执行 python3 -m venv .venv,会生成一个 .venv 文件夹,里面有独立的解释器和 site-packages 目录。之后在这个环境里装的包,只属于这个项目,不会影响系统和其他项目。建议把 .venv 加进 .gitignore,环境本身不需要提交到仓库。
二、激活与退出
Linux 和 macOS 下执行 source .venv/bin/activate,Windows 下执行 .venv\Scripts\activate。激活后命令行前面会出现 (.venv) 提示,此时的 python 和 pip 都指向虚拟环境。用 which python 可以确认路径。工作结束后输入 deactivate 即可退出。
三、记录依赖:requirements.txt
装好需要的库之后,执行 pip freeze > requirements.txt,把当前环境的包和版本号写进文件。别人拿到项目后,只要新建虚拟环境再执行 pip install -r requirements.txt,就能得到一致的依赖。如果只想记录自己直接用到的库,也可以手动维护这个文件,并写明版本范围,例如 requests>=2.31,<3。
四、常见坑
第一,忘记激活就 pip install,包会装到全局环境,可以先看命令行前缀再操作。第二,在 IDE 里运行脚本时,记得把解释器切换到 .venv 里的 python,否则 IDE 仍然使用系统解释器。第三,不要直接移动或重命名 .venv 目录,里面的脚本写死了绝对路径,移动后最好删掉重建。第四,升级 Python 大版本后,旧的虚拟环境也应该重新创建。
五、在服务器上同样适用
部署到云服务器时,同样建议用虚拟环境运行服务。比如用 systemd 托管一个 Flask 应用,ExecStart 直接写 .venv/bin/python app.py 或 .venv/bin/gunicorn 的绝对路径,就不用担心系统 Python 升级把依赖弄乱。配合 requirements.txt,在新服务器上重建环境只需要几条命令。
小结
一个项目一个虚拟环境,依赖写进 requirements.txt,运行前确认解释器路径,这三条习惯能帮你避开大部分“环境问题”。等项目变复杂后,再考虑 Poetry、uv 等更完整的工具,它们的核心思路和 venv 是一样的。
- 点赞
- 收藏
- 关注作者
评论(0)