优先选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免费学习笔记(深入)”;
一个经过完善设计的经典网上购物系统,适用于各种服务器环境的高效网上购物系统解决方案,shopxp购物系统Html版是我们首次推出的免费购物系统源码,完整可用。我们的系统是免费的不需要购买,该系统经过全面测试完整可用,如果碰到问题,先检查一下本地的配置或到官方网站提交问题求助。 网站管理地址:http://你的网址/admin/login.asp 用户名:admin 密 码:admin 提示:如果您
- 只放运行时必需的包,用
pipreqs . --force自动生成初稿,再人工删减 - 避免写死小版本号(如
requests==2.28.1),改用兼容声明:requests>=2.28.0, - 绝对不要在
requirements.txt里写-e .或本地路径,CI 机器找不到源码目录 - 区分依赖类型:用
requirements-dev.txt单独管pytest、black这类工具
多 Python 版本共存时怎么切环境
不是靠改 PYTHONPATH 或手动改 PATH,那是自找麻烦。关键是让 shell 和编辑器都认准同一个解释器路径。
常见错误现象:终端里 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 配置。稍不注意,就变成“我明明装了,它为啥说没装”。









