[英]maya python call function from another py file
我有一個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 #
我在這里做錯了什么?
(“ import test1”沒有錯誤,因此路徑正確)。
重新加載您的test1
模塊,我猜是您創建並導入了test1
但內部沒有process
方法。 為了有效地重新加載模塊,您不能只重新導入它,而必須使用重新加載。
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()
要么:
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博客 (法語)
首先,您需要在系統路徑中添加腳本位置路徑。
並且如果您將其作為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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.