gpt4 book ai didi

python - 如何让 setup.py 在子目录中包含一个包?

转载 作者:行者123 更新时间:2023-12-04 03:36:54 25 4
gpt4 key购买 nike

我有一个库 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 包含子目录中的包(因为它位于 sub_lib/sub_lib/ 中)?

当前设置.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']},
)

还是使用符号链接(symbolic link)来解决这个问题更好?

最佳答案

我能够通过符号链接(symbolic link)实现这一点:

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_libpip 子模块,我可以使用第二个符号链接(symbolic link):

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

关于python - 如何让 setup.py 在子目录中包含一个包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66713280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com