【发布时间】:2017-10-23 18:21:30
【问题描述】:
我有一些由服务器、客户端和公共代码组成的 python 代码,我试图将它们拆分为共享包命名空间的单独项目。我见过一些类似的问题,但它们似乎指的是独立但有名称冲突的包。
我正在尝试制作一个简单的示例
a
├── pkg
│ ├── a.py
│ ├── __init__.py
└── setup.py
b
├── pkg
│ ├── b.py
│ ├── __init__.py
└── setup.py
a/setup.py
import setuptools
setuptools.setup(
name='pkg_a',
packages=setuptools.find_packages(),
entry_points={
'console_scripts': [
'pkga=pkg.a:main'
]
}
)
a.py
def main():
print('Module A')
请注意b/setup.py 和b.py 相同,对a 的引用更改为b。
如果我在这些目录中的每一个中执行pip install .,命令pka 和pkgb 都可以工作,但import pkg.a 或import pkg.b 仅适用于安装的最后一个。 a.py 和 b.py 以及一个空的 __init__.py 都在 site-packages/pkg 中。
有什么方法可以使这个设置生效吗?尝试跨包共享包名是不是一个坏主意?
【问题讨论】:
标签: python setuptools python-packaging