【发布时间】:2015-01-18 18:39:27
【问题描述】:
使用 Python 3.4 和 Setuptools,我试图让命名空间包按照 PEP 420 中的定义正常工作。我的目录结构如下所示:
- 项目
- __init__.py
- 核心
- 几个 .py 文件
- 日志记录
- com1
- 几个 .py 文件
- com2
- 几个 .py 文件
- 界面
- 杂项文件
使用 setuptools find_package() 函数时,它会找到“项目”包,但不会安装“项目”内的任何文件夹(隐式子包)。当我解压 .egg 文件时,我看到的只是里面的 __init__.py 文件,没有任何子目录或文件。
我可以在每个目录中放一个 __init__.py,但由于这些文件都是空的,而且我不喜欢它使结构工作的方式,我试图避免这种情况。
如果我移到我的“项目”目录之外,并运行以下命令,它可以工作
python -m project.logging.com1.myfile
但在其他任何地方它都不起作用,因为 setuptools 没有安装其中没有 __init__.py 的子目录(隐式命名空间)。
如何让 setuptools 正确安装我的隐式命名空间包?我只需要告诉它在目录中安装所有文件就足够了吗?
【问题讨论】:
标签: python python-3.x namespaces setuptools python-3.4