Python Can';t导入命名空间包“;c4d“;但它的任何其他名称都有效
我自己构建了一个Python库的集合,我在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 *
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