2016-01-22 28 views
1

我有一個python腳本保存到文件。瑪雅python從另一個py文件調用函數

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 # 

我在做什麼錯在這裏?

('import test1'不給出錯誤,所以路徑是正確的)。

回答

2

解決方法:

刷新你的test1模塊,我的猜測是,你創建並導​​入test1沒有process方法內。要有效地重新加載模塊,您不能只重新導入它,您必須使用重新加載。

reload(test1) 
from test1 import process 

其他意見:

使用原始字符串使用路徑時:

您的路徑字符串之前添加rsys.path.append(r'J:\scripts\src\maya')

Python Doc

反斜槓()字符用於轉義 或其他有特殊含義的字符,例如換行符,反斜槓本身, 或引號字符。字符串文字可以選擇以字母'r'或'R'作爲前綴 ;這樣的字符串被稱爲原始字符串,並使用不同的規則來解釋反斜槓轉義序列。

檢查您導入模塊的方式:

你寫的,這是不正確的:

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(法國)

0

首先,您需要在系統路徑中添加腳本位置路徑。

如果您將此作爲python軟件包,請不要忘記在軟件包目錄中添加 a __init__.py文件。

比你可以執行下面的代碼。

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

import test1 
test1.process()