2014-10-12 51 views
1

我需要通過嵌入式Python解釋器同時解釋幾個文件(腳本)(更詳細,一個腳本執行另一個腳本爲Popen,我的應用程序攔截它並自行執行)。我發現它叫sub-interpreter,我打算使用它。但我讀過子解釋沒有sys.argv如何將args傳遞給嵌入式python子解釋器?

新的環境沒有sys.argv中變量

我需要傳遞argv的呢,所以我該怎麼辦呢?

+0

那麼你不能通過argv。你想實現的更高層次的目標是什麼?即你會在argv中傳遞什麼? – 2014-10-12 09:34:59

+0

我需要將一些參數傳遞給腳本(f.e.數據文件名) – 4ntoine 2014-10-12 09:36:14

回答

3

您可能會發現更容易修改每個腳本遵循的模式:

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方法調用每個依次下標。

+0

是的,我理解了這個想法。很好的解決方法 – 4ntoine 2014-10-12 16:44:29

+0

這是一種我一直使用的模式,當我有一個實用程序腳本時,它也可能有用。 – 2014-10-12 17:10:15

1

您可以使用環境變量。讓父母通過更新字典os.environ(如果它在Python中)或setenv()(如果在C或C++等中)來設置它們。然後,孩子們可以讀取os.environ以獲取他們需要的任何字符串。

+0

它似乎應該在Py_Initialize之前設置os變量,並且在那個時候它們是未知的 – 4ntoine 2014-10-12 09:57:33

+0

我認爲如果您對這裏的情況有更多具體的描述,這將有所幫助。就目前的情況而言,我基本上已經失去了自己的想法。 – 2014-10-12 11:56:09