我最近构建了一个Python包并通过Debian packager安装它。它安装在我的系统上,因此我可以在其他项目中使用它。在我的新项目中,我有一个包文件夹的相同名称,即opal。我扫描了网站,包括这个网站以及指向使用的所有内容:
from __future__ import absolute_import
不幸的是,它无法解决问题,我怀疑我错过了一个细节。
我正在使用Python 2.7.3,这是我的项目文件夹结构:
已安装的包结构:
- opal
__init__.py
core.py
新项目结构:
- opal
- __init__.py
- net.py
在新项目中,我无法做到:
from opal.core import OpalClient
我总是收到core
!!!
opal
的错误
如果__future__
是解决方案,那么有人可以为我提供一个示例。我尝试了几种方法,总是出错。我发现这对于这种简洁的语言来说是一个尴尬的问题;)
干杯
答案 0 :(得分:1)
如果没有其他帮助,Python会不合并名称空间。在找到其他顶级opal
包之前,您在一个位置找到了opal
顶级包。找到的第一个包有opal.net
作为包含模块,但不是opal.core
模块。
您需要使用setuptools namespace setup来启用此行为;安装符合setuptools
setup.py
的软件包,让它为您注册和管理名称空间。
如果您使用的是Python 3.3或更高版本,则可以使用新的PEP 420 namespace support,其中您将离开顶级目录(或目录)为空以创建一个名称空间然后可以合并。另请参阅Python 3导入系统文档中的Namespace packages。