python - 一个包内的多个子包

标签 python package setuptools setup.py

我正在尝试编写具有以下结构的包

/package
    setup.py

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

我的 setup.py 目前看起来像这样:

from setuptools import setup, find_packages

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

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

我希望能够将它们导入为

from package import subpackage1
from package import subpackage2

这很重要,因为 subpackage1 和 subpackage2 在我的系统中也作为独立包存在。

有人可以帮我吗?

最佳答案

您显示的片段没有意义。看起来有误会,特别是 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可能有帮助。

关于python - 一个包内的多个子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59665599/

相关文章:

python - 带有嵌套列表的字典理解,防止覆盖

python - 更改 Python easy_install 的默认包含路径

Python Selenium add_extensions 关闭安装启动画面

python - Flask应用程序中的Opencv视频

python - vs代码中的热键可在python交互式窗口和事件编辑器之间切换?

java - 从java中的另一个项目访问包和类文件

java - 多级包 - Java

sql-server - 如何设置项目以使用 odbc 和 mssql 驱动程序?

python - 在 python 中使用 git 子模块

python - 特别是本地 Django 部署。织物?