如何编写设置脚本使Python脚本无需重装依赖即可在Ubuntu环境运行
跨Windows/Ubuntu Python脚本免重装依赖解决方案
你的需求完全可以实现,目前有两种成熟的可行方案,同时你现有的检查脚本也存在适配问题,具体内容如下:
现有代码问题说明
你当前编写的setup.py存在两个明显问题:
- Ubuntu系统默认Python3对应的pip命令为
pip3,直接调用pip会出现找不到命令的错误,导致逻辑执行失败 - 现有逻辑是检测到缺失依赖时联网下载安装,本身不符合你“不需要重新安装依赖”的预设需求
方案1:打包为独立可执行文件(最符合“复制即运行”需求)
这个方案不需要目标机器安装Python环境和任何依赖,直接拷贝二进制文件就能运行。
操作步骤:
- 准备一套和目标Ubuntu版本、架构一致的运行环境(可以用虚拟机、Docker容器)
- 将你的代码和依赖全部在该环境安装调试完成
- 安装打包工具:
pip3 install pyinstaller - 执行打包命令:
pyinstaller -F 你的主脚本文件名.py - 打包完成后,取出
dist目录下生成的二进制文件,拷贝到任意同架构Ubuntu环境即可直接运行。
方案2:源码+离线依赖包分发(需要一次轻量安装,保留源码)
如果需要保留脚本源码,可以把所有依赖的安装包提前打包和脚本一起分发,不需要目标机器联网下载。
操作步骤:
- 同样先在适配的Ubuntu测试环境安装好所有依赖
- 导出依赖列表:
pip3 freeze > requirements.txt - 下载所有依赖的离线安装包到指定目录:
pip3 download -r requirements.txt -d ./offline_pkgs - 将你的Python脚本、requirements.txt、offline_pkgs目录一起拷贝到目标Ubuntu机器
- 执行离线安装命令即可完成依赖部署,无需联网下载:
pip3 install --no-index --find-links=./offline_pkgs -r requirements.txt - 安装完成后即可正常运行脚本。
注意事项
- 两种方案都需要打包环境和目标Ubuntu环境的架构(x86/ARM)、系统大版本一致,避免出现glibc版本不兼容、二进制包不匹配的问题
- 若使用PyInstaller打包,建议在干净的Python虚拟环境中操作,避免把无关依赖打包进二进制文件,减小文件体积
- 若修改原有检查脚本,建议把
pip替换为sys.executable -m pip的调用方式,避免出现pip命令不匹配、虚拟环境调用错误的问题。
内容的提问来源于stack exchange,提问作者Cheries
相关产品推荐
相关产品推荐

