来自另一个py文件

时间:2016-01-22 11:06:32

标签: python maya

我将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;没有错误,因此路径正确)。

2 个答案:

答案 0 :(得分:2)

解决方案:

重新加载test1模块,我的猜测是您创建并导入了test1而没有process方法。要有效地重新加载模块,您只能重新导入它,您必须使用重新加载。

reload(test1)
from test1 import process

其他观察:

使用路径时使用原始字符串:

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

Python Doc

  

反斜杠()字符用于转义字符   否则具有特殊含义,例如换行符,反斜杠本身,   或引用字符。字符串文字可以选择加前缀   写着一封信&#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()