我需要通過嵌入式Python解釋器同時解釋幾個文件(腳本)(更詳細,一個腳本執行另一個腳本爲Popen
,我的應用程序攔截它並自行執行)。我發現它叫sub-interpreter,我打算使用它。但我讀過子解釋沒有sys.argv
:如何將args傳遞給嵌入式python子解釋器?
新的環境沒有sys.argv中變量
我需要傳遞argv的呢,所以我該怎麼辦呢?
我需要通過嵌入式Python解釋器同時解釋幾個文件(腳本)(更詳細,一個腳本執行另一個腳本爲Popen
,我的應用程序攔截它並自行執行)。我發現它叫sub-interpreter,我打算使用它。但我讀過子解釋沒有sys.argv
:如何將args傳遞給嵌入式python子解釋器?
新的環境沒有sys.argv中變量
我需要傳遞argv的呢,所以我該怎麼辦呢?
您可能會發現更容易修改每個腳本遵循的模式:
def run(*posargs, **argdict):
"""
This does the work and can be called with:
import scriptname
scriptname.run(someargs)
"""
# Code goes here and uses posargs[n] where it would use sys.argv[n+1]
if __name__ == "__main__":
import sys
run(sys.argv[1:])
然後你的主腳本可以只通過簡單地調用run方法調用每個依次下標。
是的,我理解了這個想法。很好的解決方法 – 4ntoine 2014-10-12 16:44:29
這是一種我一直使用的模式,當我有一個實用程序腳本時,它也可能有用。 – 2014-10-12 17:10:15
您可以使用環境變量。讓父母通過更新字典os.environ
(如果它在Python中)或setenv()
(如果在C或C++等中)來設置它們。然後,孩子們可以讀取os.environ
以獲取他們需要的任何字符串。
它似乎應該在Py_Initialize之前設置os變量,並且在那個時候它們是未知的 – 4ntoine 2014-10-12 09:57:33
我認爲如果您對這裏的情況有更多具體的描述,這將有所幫助。就目前的情況而言,我基本上已經失去了自己的想法。 – 2014-10-12 11:56:09
那麼你不能通過argv。你想實現的更高層次的目標是什麼?即你會在argv中傳遞什麼? – 2014-10-12 09:34:59
我需要將一些參數傳遞給腳本(f.e.數據文件名) – 4ntoine 2014-10-12 09:36:14