[英]How do I force setup.py to include the `__init__.py` file and make my package importable?
[英]How can I make setup.py include a package in a subdirectory?
我有一個庫 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
包含來自子目錄的 package (因為它位於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的main_lib
子模塊,我可以使用第二個符號鏈接:
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
一旦安裝了main_lib
,諸如 from main_lib.sub_lib.foo import bar 之類的東西就會起作用,而from sub_lib.foo import bar
之類的東西就會起作用(在sub_lib
中進行必要的導入)。 不需要對setup.py
進行任何更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.