Python Can';t导入命名空间包“;c4d“;但它的任何其他名称都有效

Python Can';t导入命名空间包“;c4d“;但它的任何其他名称都有效,python,import,namespaces,python-2.6,Python,Import,Namespaces,Python 2.6,我自己构建了一个Python库的集合,我在nr名称空间下收集这些库。现在,对于一个名为C4D的应用程序中的Python插件,我想使用nr.C4D模块,但它无法导入。奇怪的是,如果我将它重命名为其他名称(例如,nr.c4dlib),它就可以工作了 + nr.c4d\ + nr\ * __init__.py # < pkgutil.extend_path() in here + c4d\ * __init__.py * gui.py *

我自己构建了一个Python库的集合,我在
nr
名称空间下收集这些库。现在,对于一个名为C4D的应用程序中的Python插件,我想使用
nr.C4D
模块,但它无法导入。奇怪的是,如果我将它重命名为其他名称(例如,
nr.c4dlib
),它就可以工作了

+ nr.c4d\
  + nr\
    * __init__.py  # < pkgutil.extend_path() in here
    + c4d\
      * __init__.py
      * gui.py
      * ...
nr.\uuuu路径\uuuu
列表似乎也不错

['C:\\maxon\\Cinema 4D R16 Dev\\plugins\\procedural\\python\\nr',
 'C:\\maxon\\Cinema 4D R16 Dev\\plugins\\cloudui_frontend_r16\\devel\\nr.strex\\nr',
 'C:\\maxon\\Cinema 4D R16 Dev\\plugins\\cloudui_frontend_r16\\devel\\nr.concurrency\\nr',
 'C:\\maxon\\Cinema 4D R16 Dev\\plugins\\cloudui_frontend_r16\\devel\\nr.cli\\nr',
 'C:\\maxon\\Cinema 4D R16 Dev\\plugins\\cloudui_frontend_r16\\devel\\nr.c4d\\nr']
但我明白了

Traceback (most recent call last):
  File "'cloudui_frontend.pyp'", line 176, in <module>
ImportError: No module named c4d
回溯(最近一次呼叫最后一次):
文件“'cloudui_frontend.pyp'”,第176行,在
ImportError:没有名为c4d的模块
环境中可能有一个名为
c4d
的内置模块。这个错误的来源是什么?如何修复它



更新问题似乎来自另一个名为
nr.procedural
的名称空间模块。它在文件顶部导入c4d。如果该行被注释掉,则导入
nr.c4d
有效!另外,我可以在
nr之前,从
future\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu import

中添加
,而不是注释掉这一行。相对导入导致在
sys.modules
中为
nr.c4d
创建一个
None
-entry。这是我在我的
localimport
存储库中打开的问题:

场景
nr.procedural
是否导入c4d
。如果
nr.c4d
不存在,模块将作为无条目添加到
sys.modules
。如果使用
\u localimport
导入
nr.c4d
,则将找不到该模块,因为模块缓存表明该模块不存在(通过None条目)

解决方案
\u localimport
必须在
\uuuuu enter\uuuuu()上删除命名空间包的所有条目

这是相对容易的

我需要将
从未来导入绝对导入添加到所有导入c4d的
子包中

Traceback (most recent call last):
  File "'cloudui_frontend.pyp'", line 176, in <module>
ImportError: No module named c4d