如何让 setup.py 在子目录中包含一个包?
How can I make setup.py include a package in a subdirectory?
我有一个库 git 存储库 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
这样,一旦 main_lib
安装了 pip,像 from main_lib.sub_lib.foo import bar
这样的东西就可以工作了,像 from sub_lib.foo import bar
这样的东西就可以工作了(在 sub_lib
中需要导入)。 setup.py
无需更改。
我有一个库 git 存储库 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
这样,一旦 main_lib
安装了 pip,像 from main_lib.sub_lib.foo import bar
这样的东西就可以工作了,像 from sub_lib.foo import bar
这样的东西就可以工作了(在 sub_lib
中需要导入)。 setup.py
无需更改。