如何在自有包bar中使用修改了setup.py的第三方分叉包my_foo?
关于分叉包my_foo在bar中的使用方案
最佳使用方式
- 优先给原包foo提PR:你只修改了setup.py里的编译标记,属于兼容性修复,直接给上游foo提交Pull Request是最省心的选择。如果上游合并了你的修改,bar直接依赖官方版foo即可,不用维护分叉包。
- 若上游不接受修改,直接依赖分叉包而非做子包:别把my_foo做成bar的子包
bar.my_foo,这样会造成代码冗余,后续原foo更新时还得手动同步,维护成本高。正确的做法是让bar直接依赖你的my_foo分叉版本。
是否需要上传my_foo到PyPI?
- 如果bar是公开分发的包:建议上传my_foo到PyPI。注意给包名改个唯一标识,比如
foo-michael或者michael-foo,避免和原foo重名;同时在setup.py里更新name字段,描述里说明是原foo的分叉版本及修改内容。上传后,在bar的setup.py里设置install_requires = ["foo-michael==x.y.z"](替换成你上传的版本号)。 - 如果是私人/内部项目:可以不用上传PyPI,直接通过Git仓库地址依赖。比如在bar的setup.py里写:
或者在requirements.txt中指定:install_requires = [ "my_foo @ git+https://github.com/你的用户名/my_foo.git@指定分支或标签" ]git+https://github.com/你的用户名/my_foo.git@指定分支或标签#egg=my_foo
能否从PyPI安装带自定义setup.py的包?
完全可以。PyPI上的包本身就包含setup.py(或pyproject.toml),你上传的my_foo就是带修改后setup.py的版本,用户用pip install 你的包名安装时,pip会自动执行你自定义的setup.py完成编译和安装流程。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

