maya python从另一个py文件调用函数

maya python从另一个py文件调用函数,python,maya,Python,Maya,我有一个python脚本保存到文件中 test1.py import maya.cmds as cmds import sys def process(): print 'working' 我需要在另一个python脚本(maya内部)中从该脚本运行函数。我有: import sys sys.path.append('J:\scripts\src\maya') from test1 import process test1.process() 但它给了我: from test1

我有一个python脚本保存到文件中

test1.py

import maya.cmds as cmds
import sys

def process():
    print 'working'
我需要在另一个python脚本(maya内部)中从该脚本运行函数。我有:

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 # 
来自test1导入过程的

#错误:导入错误:文件第4行:无法导入名称进程#
我做错了什么

(“导入测试1”未给出错误,因此路径正确)。

解决方案: 重新加载
test1
模块,我猜您创建并导入了
test1
,但内部没有
过程
方法。要有效地重新加载模块,您不能只重新导入它,您必须使用重新加载

reload(test1)
from test1 import process

其他意见: 使用路径时使用原始字符串:

在路径字符串之前添加
r
sys.path.append(r'J:\scripts\src\maya')

反斜杠()字符用于转义 否则有特殊含义,如换行符、反斜杠本身, 或引号字符。字符串文字可以选择性地加前缀 带有字母“r”或“r”;这样的字符串称为原始字符串并使用 解释反斜杠转义序列的不同规则

检查导入模块的方式:

您写了以下内容,这是无效的:

from test1 import process
test1.process()
但你可以有两种方式:

import test1 
test1.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

J:\scripts\src\maya\p>首先需要在系统路径中添加脚本位置路径

如果您将其作为python包,请不要忘记添加 包目录中的
\uuuu init\uuuu.py
文件

然后您可以执行以下代码

import sys
path = r'J:\scripts\src\maya'
if path not in sys.path:
    sys.path.append(path)

import test1
test1.process()
import sys
path = r'J:\scripts\src\maya'
if path not in sys.path:
    sys.path.append(path)

import test1
test1.process()