首页 > 解决方案 > 使用 setuptools 的 python 替代包设置

问题描述

我在使用我的特定设置添加软件包时遇到了一些问题:

.
├── 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

我试图按照 doc 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 developthen python -c 'from pkg_a import module_a'
这种特定的设置是否可以实现?我在这里搞砸了什么?谢谢大家!

标签: pythonsetuptools

解决方案


package_dir修改不适用于可编辑(又名开发)安装。可编辑安装的唯一可接受package_dir的修改是涵盖所谓的-layout的修改:src

    package_dir={'': 'src'},

推荐阅读