如何解决如何让 setup.py 在子目录中包含一个包?
我有一个库 git repo sub_lib
,由于各种原因我无法直接发布到 pypi 存储库。相反,我将它用作以下结构中另一个库 main_lib
的 git 子模块:
my_repo/
setup.py
main_lib/
__init__.py
sub_lib/ # a git submodule
setup.py
sub_lib/
__init__.py
main_lib
需要 import sub_lib
,那么我如何配置 my_repo
的 setup.py
以包含 main_lib
和 sub_lib
作为包?特别是,是否可以让 setup.py
包含子目录中的包(因为它位于 sub_lib/sub_lib/
中)?
当前 setup.py:
from setuptools import setup,find_packages
setup(
name='main-lib',...,packages=find_packages(exclude=['tests*']),package_data={'main_lib': ['py.typed'],'sub_lib': ['py.typed']},)
还是使用符号链接来解决这个问题更好?
解决方法
我能够使用符号链接来实现这一点:
my_repo/
setup.py
main_lib/
__init__.py
sub_lib_repo/ # a git submodule
setup.py
sub_lib/
__init__.py
sub_lib -> ./sub_lib_repo/sub_lib
在我的特殊情况下,我需要 sub_lib
也是 main_lib
的 pip 子模块,我可以使用第二个符号链接:
my_repo/
setup.py
main_lib/
__init__.py
sub_lib -> ../sub_lib_repo/sub_lib
sub_lib_repo/ # a git submodule
setup.py
sub_lib/
__init__.py
sub_lib -> ./sub_lib_repo/sub_lib
这样,from main_lib.sub_lib.foo import bar
之类的东西在安装了 pip 后 main_lib
就可以工作,而 from sub_lib.foo import bar
之类的东西就可以工作(sub_lib
中的必要导入)。无需更改 setup.py
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。