微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决安装程序:将其安装为 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 举报,一经查实,本站将立刻删除。