002-Python开发环境搭建:PyCharm、VSCode与虚拟环境
002-Python开发环境搭建PyCharm、VSCode与虚拟环境昨天深夜调试一个老项目环境依赖冲突直接让解释器崩了。错误日志里密密麻麻的版本号看得人头皮发麻——这场景太熟悉了又是全局环境乱装包的后果。折腾两小时回滚环境后我决定把环境搭建这件事重新梳理清楚。工具选对环境隔离做好能省下至少一半的调试时间。选编辑器PyCharm还是VSCode新手常纠结这两个选择。我的建议是长期做Python开发选PyCharm多语言混战选VSCode。PyCharm的专业版对Web开发、科学计算支持很到位特别是Django和Flask的项目开箱即用。它的智能补全和调试器是我用过最顺手的尤其是远程调试和数据库工具链。社区版也够用但大型项目导航会稍显吃力。# PyCharm的调试技巧条件断点foriinrange(1000):# 右键断点设置 i 500 时才暂停process_data(i)# 不用傻等循环跑完VSCode的优势在于轻量和插件生态。装上Python扩展后基本功能齐备但深度功能需要自己配置。它的多语言支持是真香前脚写Python后脚改JavaScript不用切软件。不过项目文件超过千个时索引速度会明显慢于PyCharm。// settings.json 关键配置VSCode{python.linting.enabled:true,// 代码检查一定打开python.formatting.provider:black,// 格式化用black准没错terminal.integrated.shell.windows:cmd.exe// Windows下别用PowerShell路径处理有坑}虚拟环境别再用全局环境了见过太多人用pip install直接往系统Python里装包后期项目依赖打架只能重装系统Python。虚拟环境是Python项目的保险绳。venv是官方推荐Python 3.3以上自带无额外安装成本python-mvenv myenv# 创建环境sourcemyenv/bin/activate# Linux/Mac激活myenv\Scripts\activate# Windows激活注意反斜杠激活后终端提示符会带环境名这时候pip install只会装到当前环境。退出用deactivate。Anaconda适合科学计算场景尤其是需要非Python库如CUDA、MKL的时候。但注意conda的依赖解析有时很慢混合使用conda和pip要小心优先级。conda create-nmyenvpython3.8# 指定Python版本conda activate myenv condainstallnumpy# 优先用conda装包更稳定pipinstallsome-package# conda没有的再用pip依赖管理requirements.txt只是起点手动维护requirements.txt太原始了试试pip freeze requirements.txt它会把所有包包括间接依赖都列出来导致环境臃肿。推荐用pipreqs只生成项目实际导入的包pipinstallpipreqs pipreqs ./--encodingutf-8# 生成干净的requirements.txt进阶玩家该上Poetry或Pipenv了。Poetry的依赖解析算法更优还能打包发布# pyproject.toml (Poetry配置) [tool.poetry.dependencies] python ^3.8 requests { version ^2.25, extras [security] } # 可以声明额外特性调试实战环境问题排查遇到“ModuleNotFoundError”先别慌按这个顺序查import sys; print(sys.path)看Python去哪儿找包which python或where python确认当前Python解释器检查虚拟环境是否激活终端提示符或sys.prefix如果是PyCharm去设置里看项目解释器路径对不对PyCharm调试时有个隐藏技巧在调试控制台直接运行代码片段能实时查看变量。VSCode则要善用“调试控制台”和“监视”窗口。个人配置习惯我的工作流通常这样安排本地开发PyCharm venv用Poetry管理依赖服务器调试VSCode Remote SSH直接连过去在服务端创建虚拟环境临时脚本直接用VSCode开个临时虚拟环境用完即删环境目录我习惯放在项目根目录下./venv方便备份和删除。但记得在.gitignore里加venv/和.env别把虚拟环境传上Git。最后给个忠告不要相信系统Python也不要相信任何声称“只装一个包”的冲动。每个项目都该有自己独立的虚拟环境这是血泪教训换来的纪律。刚开始觉得麻烦等哪天需要同时维护Python 2.7的老项目和Python 3.10的新项目时你会回来谢我的。