Python 依赖管理三件小事:别让"在我机器上能跑"坑了你
刚学 Python 的人几乎都踩过这个坑:代码在自己电脑上跑得好好的,发给同事或者部署到服务器就报错——某某模块找不到、版本不对。问题往往不在代码,而在依赖管理。分享三件小事,照着做就能避开大多数坑。
第一件:永远用虚拟环境。Python 自带的 venv 就够用。在项目根目录执行 python -m venv .venv,激活后再 pip install(Windows 下是 .venv\Scripts\activate,Linux/macOS 下是 source .venv/bin/activate)。虚拟环境把这个项目的依赖和系统全局隔离开,换电脑、换项目都不打架。很多新手图省事直接装到全局,半年后连自己装过什么都说不清,删都不敢删。
第二件:用 requirements.txt 锁版本,但别直接 pip freeze。pip freeze 会把虚拟环境里的所有包都导出来,包括你顺手装的、项目根本没用到的东西。更好的做法是只手写项目的直接依赖,比如 requests==2.32.3、pandas==2.2.2,部署时 pip install -r requirements.txt。想更严谨可以再加一份 pip freeze > requirements.lock.txt 留档,但对外交付看手写的那份。版本号用 == 精确锁定,>= 留给库作者,应用项目尽量别用。
第三件:注意 Python 解释器版本本身。依赖锁了版本,解释器版本没锁一样翻车——比如代码用了 3.11 才有的 tomllib,服务器上却还是 3.9。在项目根目录放一个 .python-version(pyenv 会认),或在 README 里写明"需要 Python >=3.10",CI 和部署脚本里加一步 python --version 校验。几秒钟的事,能省掉半夜排错的几小时。
最后一条经验:换新环境时按"建 venv → 装依赖 → 跑测试"的顺序走一遍,通不过就说明依赖描述不完整,趁现在补上。依赖管理不追求花哨工具,先把这三件小事做扎实,“在我机器上能跑"就会变成"在哪都能跑”。
- 点赞
- 收藏
- 关注作者
评论(0)