2016-08-01 17 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

谢谢,我们将尽力并发布更新 –

相关问题