我将python脚本保存到文件中。
test1.py
import maya.cmds as cmds
import sys
def process():
print 'working'
我需要在maya里面的另一个python脚本中运行这个脚本中的函数。我有:
import sys
sys.path.append('J:\scripts\src\maya')
from test1 import process
test1.process()
但它给了我:
from test1 import process
# Error: ImportError: file <maya console> line 4: cannot import name process #
我在这里做错了什么?
(&#39;导入test1&#39;没有错误,因此路径正确)。
答案 0 :(得分:2)
重新加载test1
模块,我的猜测是您创建并导入了test1
而没有process
方法。要有效地重新加载模块,您只能重新导入它,您必须使用重新加载。
reload(test1)
from test1 import process
使用路径时使用原始字符串:
在路径字符串前添加r
:
sys.path.append(r'J:\scripts\src\maya')
反斜杠()字符用于转义字符 否则具有特殊含义,例如换行符,反斜杠本身, 或引用字符。字符串文字可以选择加前缀 写着一封信&#39; r&#39;或者&#39; R&#39;;这样的字符串称为原始字符串并使用 解释反斜杠转义序列的不同规则。
检查导入模块的方式:
你写的,这是无效的:
from test1 import process
test1.process()
但你可以采用任何一种方式:
import test1
test1.process()
或:
from test1 import process
process()
总结这些是导入模块或包的方法:
>>> import test_imports
>>> from test_imports import top_package
>>> from test_imports import top_module
test_imports.top_module
>>> from test_imports.top_package import sub_module
test_imports.top_package.sub_module
假设您有以下层次结构:
J:\scripts\src\maya # <-- you are here
.
`-- test_imports
|-- __init__.py
|-- top_package
| |-- __init__.py
| |-- sub_package
| | |-- __init__.py
| | `-- other_module.py
| |-- sub_module.py
`-- top_module.py
积分转到Sam & Max blog(法语)
答案 1 :(得分:0)
首先,您需要在系统路径中添加脚本位置路径。
如果你把它作为python包而不是忘记添加
包目录中的__init__.py
文件。
您可以执行以下代码。
import sys
path = r'J:\scripts\src\maya'
if path not in sys.path:
sys.path.append(path)
import test1
test1.process()