请考虑以下最小的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 beta
,import gamma
和from gamma import theta
。
我的问题:是否可以修改setup.py
以便直接导入theta
即import theta
而不用使用from gamma import theta
?
答案 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/'}
)