python - 使用 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 develop
then python -c 'from pkg_a import module_a'
。
这种特定的设置是否可以实现?我在这里搞砸了什么?谢谢大家!
解决方案
package_dir
修改不适用于可编辑(又名开发)安装。可编辑安装的唯一可接受package_dir
的修改是涵盖所谓的-layout的修改:src
package_dir={'': 'src'},
推荐阅读
- ios - 使用 CoreLocation 点击按钮时,提高准确度以获取最近的地址
- python - 表示该模块没有位于同一目录中的属性
- java - 为什么我们不能在 Java 中将子类对象分配给它的超类对象?
- reactjs - 使用 navlink 的 Reactjs 条件路由
- java - 在参数化 jUnit 4 测试中访问参数 Collection<> 的问题
- docker - 使用 Docker 工作流程清洁操作系统
- html - 溢出元素内的粘性元素
- javascript - 角度 6 请添加@NgModule 注释
- node.js - 我可以/如何使用 Postman 连接到 MLAB DB?
- c# - 为什么 break 会终止整个程序而不仅仅是当前线程