Python 依赖管理三件小事:别让"在我机器上能跑"坑了你

举报
yd_299485664 发表于 2026/10/22 08:07:29 2026/10/22
【摘要】 刚学 Python 的人几乎都踩过这个坑:代码在自己电脑上跑得好好的,发给同事或者部署到服务器就报错——某某模块找不到、版本不对。问题往往不在代码,而在依赖管理。分享三件小事,照着做就能避开大多数坑。第一件:永远用虚拟环境。Python 自带的 venv 就够用。在项目根目录执行 python -m venv .venv,激活后再 pip install(Windows 下是 .venv\S...

刚学 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 → 装依赖 → 跑测试"的顺序走一遍,通不过就说明依赖描述不完整,趁现在补上。依赖管理不追求花哨工具,先把这三件小事做扎实,“在我机器上能跑"就会变成"在哪都能跑”。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。