安装程序:将其安装为 3rd 方软件后,无法直接在路径环境变量中找到 python

问题描述

对于我的软件(仅适用于 Windows),我使用 NSIS 创建了一个安装程序。为了使软件正常工作,我将 python(版本 3.6.5)作为 3rd 方软件(.exe 文件)提供。此外,我需要进行 pip 升级并安装一些模块(例如 NumPy)。

我使用 NSIS 安装程序的方法如下:

  1. 运行可执行的 python 安装程序:在我的安装程序中,提醒用户将 python 添加到环境 %path% 变量中。提取所有文件后,将执行 Python 的 3rd 方安装程序。 Python 已安装并添加到 %path%。

  2. 运行小型 C++ 脚本 (PythonSetup.exe):(除其他外)脚本使用 {{1} 中的 GetEnvironmentvariable 匹配 python 目录的路径变量}}。如果 python 在路径中,那么它会执行一些命令,比如

Windows.h

否则它只会打印“找不到python”和整个路径环境变量。

在 NSIS 中,它是这样实现的(简化):

python -m pip install --upgrade pip
python -m pip install numpy

我的问题是

  • SetoutPath "$INSTDIR\python" File "D:\python\python-3.6.5.exe" ExecWait '"$INSTDIR\python\python-3.6.5.exe" InstallAllUsers=1 Prependpath=1' Sleep 500 File "D:\python\PythonSetup.exe" ExecWait '"$INSTDIR\python\PythonSetup.exe" $INSTDIR' Sleep 500 SetoutPath "$INSTDIR" Delete "$INSTDIR\python\python-3.6.5.exe" Delete "$INSTDIR\python\PythonSetup.exe" RmDir "$INSTDIR\python" 在 %path% 变量中找不到 python 目录。打印出我使用PythonSetup.exe中的GetEnvironmentvariable得到的路径,可以看到得到的路径确实不包含python目录。
  • 强制执行上面提到的命令,我收到错误Windows.h
  • 但是在 Windows 'python.exe' is not recognized as an internal or external command,operable program or batch file. 中检查 %path% 变量表明 python 目录确实已添加到路径变量中。我在 System Properties > Advanced > Environment Variables 运行时检查了这一点,即在 NSIS 行 PyhtonSetup.exe 期间。
  • 在 NSIS 安装程序完成后立即执行 ExecWait '"$INSTDIR\python\PythonSetup.exe" $INSTDIR' 工作正常。

我试过了

  • 更长的PythonSetup.exe
  • 其他 Python 架构(32 位与 64 位)
  • 手动查找python目录并以这种方式调用Sleep,例如
python.exe

有谁知道在C:\Program Files\python36-32\python.exe -m pip install numpy GetEnvironmentvariable返回的路径中为什么找不到python目录的原因,同时可以看到在系统属性中? 我觉得我可能遗漏了一些明显的东西......

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)