466 字
2 分钟
Python 虚拟环境与依赖管理
一个 Python 项目应该拥有独立环境。把依赖直接安装进系统 Python,容易造成版本冲突,也不利于部署和复现。
创建与激活环境
python -m venv .venv
# Linux / macOSsource .venv/bin/activate
# Windows PowerShell.venv\Scripts\Activate.ps1确认环境:
python -c "import sys; print(sys.executable)"python -m pip --version退出环境:
deactivatepip 的常用操作
python -m pip install requestspython -m pip install "django>=5,<6"python -m pip uninstall requestspython -m pip listpython -m pip show requestspython -m pip checkpip check 可以检查已安装包之间是否存在依赖冲突。
requirements.txt
记录当前环境完整版本:
python -m pip freeze > requirements.txt恢复环境:
python -m pip install -r requirements.txt对应用项目来说,完整锁定版本有利于复现。对库项目来说,不宜把所有间接依赖都写死,应在项目元数据中声明合理的版本范围。
pyproject.toml
现代 Python 项目通常使用 pyproject.toml 描述项目和直接依赖:
[build-system]requires = ["setuptools>=75"]build-backend = "setuptools.build_meta"
[project]name = "example-app"version = "0.1.0"requires-python = ">=3.12"dependencies = [ "requests>=2.32,<3",]开发模式安装:
python -m pip install -e .这样修改源码后不需要反复重新安装。
依赖升级策略
不要一次性无条件升级所有包。更稳妥的流程是:
- 查看过期包;
- 阅读目标版本变更说明;
- 单独升级一个直接依赖;
- 运行测试;
- 更新依赖快照。
python -m pip list --outdatedpython -m pip install --upgrade requestspython -m pip check缓存与镜像排查
python -m pip cache dirpython -m pip cache purgepython -m pip config list网络异常时先检查代理、证书和 pip 配置,不要随意关闭 TLS 校验。
不要提交虚拟环境
.gitignore 中加入:
.venv/__pycache__/*.py[cod].pytest_cache/虚拟环境是可生成产物,项目仓库应保存依赖声明,而不是保存环境目录。
参考资料
Python 虚拟环境与依赖管理
https://zh19990906.github.io/fuwari/posts/python-packages-and-venv/