Python导入冲突

2024-06-12 10:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近构建了一个Python包,并通过Debian packager安装了它。它安装在我的系统上,所以我可以在其他项目中使用它。在我的新项目中,我有一个包文件夹的相同名称,即opal。我浏览了包括本网站在内的所有指向使用的内容:

from __future__ import absolute_import

不幸的是,它不能解决问题,我怀疑我遗漏了一个细节。在

我使用的是Python 2.7.3,下面是我的项目文件夹结构:

安装包结构:

^{pr2}$

新项目结构:

- opal
  - __init__.py
  - net.py

在新项目中,我不能:

from opal.core import OpalClient

我总是得到一个错误,在opal下找不到{}!!!在

如果__future__是解决方案,有人能给我举个例子吗。我试了好几种方法,总是出错。我发现这对于一个如此简洁的语言来说是个棘手的问题;)

干杯


Tags: 项目frompyimport文件夹名称内容网站
1条回答
网友
1楼 · 发布于 2024-06-12 10:21:59

Python不需要额外的帮助就可以合并名称空间。在找到另一个顶层opal包之前,有一个opal顶级包。找到的第一个包将opal.net作为包含的模块,但没有{}模块。在

您需要使用setuptools namespace setup来启用此行为;使用setuptools兼容的setup.py安装您的包,并让它为您注册和管理命名空间。在

如果您使用的是python3.3或更新版本,那么可以使用新的PEP 420 namespace support,在这里您可以将顶层目录留空来创建一个可以合并的命名空间。另请参见Python3导入系统文档中的Namespace packages。在

相关问题 更多 >