问题描述
我在使用我的特定设置添加包时遇到了一些问题:
.
├── pkg_a
│ ├── pkg_a
│ │ ├── __init__.py
│ │ └── module_a.py
│ └── run_a.py
├── pkg_b
│ ├── pkg_b
│ │ ├── __init__.py
│ │ └── module_b.py
│ └── run_b.py
└── setup.py
我的目标是能够在不重复包名两次的情况下导入包模块。
例如,在 run_a.py
中,我希望能够调用 from pkg_a import module_a
而不是调用 from pkg_a.pkg_a import module_a
我尝试遵循文档 here 的第 2.1 节。通过创建 setup.py
如下:
from setuptools import setup
setup(
name="test",packages=['pkg_a','pkg_b'],package_dir={'pkg_a':'pkg_a/pkg_a','pkg_b':'pkg_b/pkg_b'}
)
但这并没有达到上面提到的预期效果,因为我试图调用 python setup.py develop
然后 python -c 'from pkg_a import module_a'
。
这个特殊的设置可以实现吗?我在这里搞砸了什么?谢谢大家!
解决方法
package_dir
修改不适用于 editable(又名 develop)安装。 editable 安装唯一可接受的 package_dir
修改是涵盖所谓的 src
-layout:
package_dir={'': 'src'},