我自己构建了一个Python库集合,我在nr
命名空间下收集这些库。现在,对于名为C4D的应用程序中的Python插件,我想使用nr.c4d
模块,但它无法导入。奇怪的是,如果我将其重命名为其他任何东西(例如。nr.c4dlib
),它就可以了!
+ nr.c4d\
+ nr\
* __init__.py # < pkgutil.extend_path() in here
+ c4d\
* __init__.py
* gui.py
* ...
这是每个命名空间__init__.py
# This is a namespace package.
try:
import pkg_resources
pkg_resources.declare_namespace(__name__)
except ImportError:
import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)
nr.__path__
列表似乎也很好。
['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
在环境中有一个名为c4d
的内置模块可能是相关的。这个错误的来源是什么?如何解决?
更新问题似乎来自另一个名为nr.procedural
的命名空间模块。它在文件顶部import c4d
。如果该行已注释掉,则导入nr.c4d
有效!此外,我可以添加from __future__ import absolute_import
。
答案 0 :(得分:0)
相对导入导致None
- 在nr.c4d
sys.modules
第nr.__path__
次展开之前为localimport
创建了nr.procedural
条目。这是我在import c4d
存储库中打开的问题:
情景:
nr.c4d
执行sys.modules
。如果_localimport
不存在,则该模块将作为无条目添加到nr.c4d
。如果然后使用_localimport
导入__enter__()
,则找不到模块,因为模块缓存表示该模块不存在(通过None-entry)。解决方案:
from __future__ import absolute_import
必须删除nr.
上命名空间包的无条目。
fix相对容易。
我需要将import c4d
添加到$scope.myObject = {}; // Empty scope variable
$scope.myObject.cAddress = ""; // initialize your model for the input.
的所有<input type="text" name="cAddress" ng-model="myObject.cAddress" required/>
子包中。