一个包中有多个子包

2024-04-25 13:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用以下结构编写一个包

/package
    setup.py

    /subpackage1
        subpackage1.py
        __init__.py
    /subpackage2
        subpackage2.py
        __init__.py
        /utils
            some_other_files_and_codes
            __init__.py

My setup.py当前看起来如下所示:

from setuptools import setup, find_packages

setup(
        name = 'subpackage1',
        version = '1.0',
        install_requires=['numpy', 
                          'scipy'],
        packages = find_packages(),                       
      )

然后使用/package文件夹中的pipinstall -e .安装它。 但是,我无法导入子包2,只能导入子包1

我希望能够将它们作为

from package import subpackage1
from package import subpackage2

这很重要,因为子包1和子包2在我的系统上也作为独立包存在

有人能帮我吗


Tags: frompyimportpackageinitpackagessetuputils
1条回答
网友
1楼 · 发布于 2024-04-25 13:40:17

您显示的代码片段没有意义。看起来有点误解,尤其是Python项目的名称和顶级可导入包的名称之间可能存在混淆

setuptools.setup()函数调用中,name参数的参数应该是项目的名称,而不是可导入的顶级包的名称。它们可以是相同的名称,但不一定

以下内容可能会使其更加明确:

MyPythonProject
├── my_importable_package_one
│   ├── __init__.py
│   └── my_module_foo.py
├── my_importable_package_two
│   ├── __init__.py
│   └── my_module_bar.py
└── setup.py

setup.py

import setuptools
setuptools.setup(
    name='MyPythonProject',
    version='1.2.3',
    packages=['my_importable_package_one', 'my_importable_package_two'],
    # ...
)
from my_importable_package_one import my_module_foo
from my_importable_package_two import my_module_bar

也许这个article on the terminology of Python packaging会有帮助

相关问题 更多 >