跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Python 多环境配置管理的实践方案

优先选conda还是venv取决于场景:科学计算用conda(包+环境双管),Web开发用venv(轻量标准);requirements.txt应为最小运行依赖契约,用pipreqs生成后人工精简并采用兼容版本声明。 conda 和 venv 到底该选哪个 多数人卡在第一步:不是不会用,而是没想清楚场景。conda 是包+环境双管,适合科学计算栈(
numpy
pytorch
R
混用);venv 是纯 Python 环境隔离,轻量、标准、CI 友好。 常见错误现象:
ModuleNotFoundError
在 conda 环境里装了
pip install
的包,却在 Jupyter 里 import 失败——大概率是 kernel 没换到对应环境,而不是包没装上。 数据处理/模型训练为主 → 优先用
conda create -n myenv python=3.9
,再
conda install
主要依赖 Web 开发或部署脚本 → 直接
python -m venv .venv
,配合
pip install -r requirements.txt
不要在 conda 环境里频繁混用
pip install
(尤其带 C 扩展的包),容易触发
ImportError: undefined symbol
requirements.txt 怎么写才不翻车 它不是快照,是契约。直接
pip freeze > requirements.txt
会把 conda 装的、系统级的、甚至开发依赖全塞进去,CI 构建时大概率失败。 使用场景:团队协作、Docker 构建、CI/CD 自动部署——这些地方要求可复现、无歧义、最小依赖集。 立即学习 “ Python免费学习笔记(深入) ”; 只放运行时必需的包,用
pipreqs . --force
自动生成初稿,再人工删减 避免写死小版本号(如
requests==2.28.1
),改用兼容声明:
requests>=2.28.0,
绝对不要在
requirements.txt
里写
-e .
或本地路径,CI 机器找不到源码目录 区分依赖类型:用
requirements-dev.txt
单独管
pytest
black
这类工具 多 Python 版本共存时怎么切环境 不是靠改
PYTHONPATH
或手动改
PATH
,那是自找麻烦。关键是让 shell 和编辑器都认准同一个解释器路径。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 常见错误现象:终端里
which python
显示的是
.venv/bin/python
,但 VS Code 还在用系统 Python,断点不进、库提示报错。 激活虚拟环境后,用
which python
(macOS/Linux)或
where python
(Windows)确认路径,复制下来 VS Code 中按
Ctrl+Shift+P
→ 输入 “Python: Select Interpreter”,粘贴路径 别信终端里显示的
(myenv)
前缀——它只是 shell 提示,和实际执行的解释器可能不是一回事 Zsh 用户注意:
source .venv/bin/activate
后,检查
$VIRTUAL_ENV
是否已设,没设说明 activate 脚本没跑完 PyPI 镜像和私有源怎么配才不冲突 全局配置
pip.conf
容易污染所有项目,尤其当你同时对接内网私有源和公网 PyPI 时,一个配错,整个
pip install
就卡住不动。 性能影响明显:私有源响应慢、证书校验严,如果把它设成默认,连装个
requests
都要等 10 秒。 项目级配置优先:在项目根目录加
pip.conf
(Linux/macOS)或
pip.ini
(Windows),内容只写当前项目需要的源 临时切换用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ requests
,比改配置快得多 私有源必须带
--trusted-host
参数(如
--trusted-host artifactory.example.com
),否则 SSL 验证失败,且这个参数不能写在
pip.conf
里(pip 22.2+ 已禁用) 镜像源别用“最快”推荐列表——有些镜像同步延迟大,刚发布的包可能 2 小时后才出现 环境管理最麻烦的从来不是命令记不住,而是每个环节都有隐式状态:shell 的当前目录、IDE 的 interpreter 设置、pip 的配置文件位置、甚至终端是否重新加载过 shell 配置。稍不注意,就变成“我明明装了,它为啥说没装”。

相关文章