簡體   English   中英

來自另一個py文件的maya python調用函數

[英]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

其他觀察:

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

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

Python文檔

反斜杠()字符用於轉義具有特殊含義的字符,例如換行符,反斜杠本身或引號字符。 字符串文字可以選擇以字母“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM