如何分发包含自包含本地依赖的Python软件包?
问题场景
- 本地机器上托管了若干私有本地包,希望将这些本地包的副本一并打包进依赖它们的软件包的发布产物中,避免跨环境安装出现路径问题
- 当前在本地机器完成软件包安装后,执行
pip freeze会输出如下内容:
public-package==3.0.1 local-package @ file:///home/user/local-package/dist/local-package-1.0.0.tar.gz
- 尝试在其他计算机上安装该软件包时,pip会直接触发报错,原因是配置中记录的
local-package对应的本地绝对路径,在目标机器上不存在。
目标实现诉求
- 是否可以通过扩展
setup.py的内置命令,在打包流程中自动完成对requirements.txt的处理,达成两个核心动作:- 提取文件中配置的所有本地包路径,将对应的本地包文件复制到发布归档的
deps目录下 - 同步把
requirements.txt里的本地包路径改写为相对路径,最终生成的requirements.txt格式如下:
- 提取文件中配置的所有本地包路径,将对应的本地包文件复制到发布归档的
public-package==3.0.1 local-package @ deps/local-package-1.0.0.tar.gz
- 最终要实现的安装效果是:pip能将
deps/识别为相对于当前软件包归档的相对路径,在目标机器上正常完成所有依赖的安装,不会因为路径不存在报错。
内容的提问来源于stack exchange,提问作者hldev
相关产品推荐
相关产品推荐

