2016-08-01 13 views
0

平臺:Windows 7的
的Python:2.7.3添加了一條新路PTYHONPATH和使用它的程序是做什麼用NSIS

StrCpy $NETWORK_PATH "\\someserver\network\path\here" 
DetailPrint "$\n" 
DetailPrint "Setting up paths required" 
Push "SETX PYTHONPATH $NETWORK_PATH;$NETWORK_PATH\lib" 
Call Execute 
Push '"C:\Python27\python.exe" setup.py deploy' 
Call Execute 

Function Execute 
    Exch $0 
    # execution of the command and return success or failure 
FunctionEnd 

這上面被編譯爲NSIS安裝和在多臺機器上運行。

問題 "C:\Python27\python.exe" setup.py deploy依賴於該$ NETWORK_PATH成功執行。

第一次運行它時,$ NETWORK_PATH被追加到PYTHONPATH環境變量中,但"C:\Python27\python.exe" setup.py deploy失敗,因爲新的PYTHONPATH僅在新的命令提示符或下次運行時纔有效。

有沒有辦法讓附加的PYTHONPATH在同一個運行中有效?

目前,我們正在運行兩次 - 一次用於設置PYTHONPATH並接受失敗,第二次運行成功。

我們嘗試的另一種替代方法是 - 我們製作了2個可執行文件,一個用於設置PYTHONPATH,另一個用於Python腳本運行。然後我們把它們放在批處理腳本中運行。

但我的首選是在一個文件和一次運行中實現這一切。

+0

你試圖導入SYS和修改的sys.path? –

+0

@KennyOstrom我們最初在python腳本中使用了sys.path,當我們的服務器出現DNS問題時,這樣做會遇到問題。因此,我們製作了安裝程序,以便我們可以快速更改到IP的網絡路徑並準備好安裝程序。對於我們來說,編輯所有機器上的python腳本成爲了開銷任務。 :( –

+0

我不明白它們之間的區別,唯一的系統特定的變化是在不同系統上的env中設置NETWORK_PATH,並且你已經這樣做了。 –

回答

1

您可以更新安裝環境中,將子進程繼承:

System::Call 'Kernel32::SetEnvironmentVariable(t "PYTHONPATH", t "$NETWORK_PATH;$NETWORK_PATH\lib")i.r0' ; $0 will be != "0" on success 
Push '"C:\Python27\python.exe" setup.py deploy' 
Call Execute 
+0

謝謝,我們將盡力併發布更新 –

相關問題