簡體   English   中英

如何讓 setup.py 在子目錄中包含 package?

[英]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_reposetup.py以包含main_libsub_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_libmain_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM