Python导入冲突

时间:2013-06-19 12:28:23

标签: python package conflict python-import

我最近构建了一个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__是解决方案,那么有人可以为我提供一个示例。我尝试了几种方法,总是出错。我发现这对于这种简洁的语言来说是一个尴尬的问题;)

干杯

1 个答案:

答案 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