python setup.py直接导入子包

时间:2019-06-18 13:27:59

标签: python setup.py

请考虑以下最小的setup.py示例。

alpha
├── beta
│   ├── beta.py
│   └── __init__.py
├── gamma
│   ├── theta
│   │   ├── theta.py
│   │   └── __init__.py
│   └── __init__.py
└── setup.py

setup.py定义为

from setuptools import setup

setup(
    name='alpha',
    author='author',
    packages=[
        'beta',
        'gamma.theta',
    ],
)

然后我安装pip install -e .,一切都会按预期进行,即我可以执行import betaimport gammafrom gamma import theta

我的问题:是否可以修改setup.py以便直接导入thetaimport theta而不用使用from gamma import theta

2 个答案:

答案 0 :(得分:0)

您可以将模块放在仅包含

gamma级别上
from gamma.theta.pkg1.pkg2 import *

,并将其命名为pkg2。那你可以做

import pkg2

我想这会让用户感到困惑,并且我还没有对其进行测试,所以我不确定它在子包的大量导入中如何工作。

答案 1 :(得分:0)

添加package_dir参数并指定包的位置将使您更加满意:

from setuptools import setup

setup(
    name='alpha',
    author='author',
    packages=[
        'theta',
    ],
    package_dir={'theta': 'gamma/'}
)