2017-06-21 105 views
1

如何用str變量在另一個腳本內執行一個腳本?

我曾與Qtdesingner, 在UI蟒蛇做了瑪雅項目經理,一個QLineEdit的授權用戶填寫的腳本的路徑運行(變量是:BatchRunScript) 但似乎不可能導入模塊,如果它是一個變量(str):

import maya.utils 
BatchRunScript = 'X:\PathOfTheScript\NameOfScriptToRun.ScriptToRun()' 
BatchRunScriptName = BatchRunScript.replace('\\', '/').split('/')[-1] 
BatchRunScriptPath = BatchRunScript.replace('\\', '/').split(BatchRunScriptName)[0] 
BatchRunModuleName = BatchRunScriptName.split('.')[0]  
print 'BatchRunScriptPath: ', BatchRunScriptPath # X:/PathOfTheScript/ 
print 'BatchRunScriptName: ', BatchRunScriptName # NameOfScriptToRun.ScriptToRun() 
print 'BatchRunModuleName: ', BatchRunModuleName # NameOfScriptToRun 

sys.path.append(BatchRunScriptPath) 
import BatchRunModuleName 
maya.utils.executeDeferred(BatchRunScriptName) 

它給我這個錯誤:

Error: ImportError: file <maya console> line 13: No module named BatchRunModuleName 

有另一種方式來d從另一個內部運行一個python腳本?

回答

1

額外的考慮之後,我相信@Rawing是正確的,你正試圖解決該問題通過以下鏈接進行澄清:Dynamic module import in Python

我已經離開了我下面的情況下,參考你發現它有用原始響應。不同之處在於,上面的鏈接顯示瞭如何根據字符串動態地導入腳本,而下面的代碼只是基於字符串執行另一個本地python腳本。導入訴執行。

雖然也許它認爲是「哈克」你總是可以利用操作系統資源從您的Python客戶端中調用上飛其他腳本。

import os 
mystr = "myscriptname.py" 
os.system('Python ' + mystr) 

這將允許您調用其他Python腳本,基於Python文件的字符串名稱,並從Python客戶端內執行。

+1

你不應該硬編碼''Python''這樣的,因爲它可能是不正確的。更好的做法是使用['sys.executable'(https://docs.python.org/3/library/sys.html#sys.executable),這將永遠是正確的。 – martineau

+0

非常感謝您的回答:) – Gnn

相關問題