在静默安装 Python 时添加到 Path var - 可能的错误?

Adding into Path var while silent installation of Python - possible bug?

我需要在我的应用程序包安装中被动安装 Python,所以我使用以下内容:

python-3.5.4-amd64.exe /passive PrependPath=1

根据这个:3.1.4. Installing Without UI 我使用 PrependPath 参数,它应该将路径添加到 Windows 环境变量中的 Path 中。

不过好像不行。变量没有任何变化。

如果我手动开始安装,然后 select 或取消 select 复选框并添加到路径中,那么一切正常。

与清除安装同样适用于修改当前安装。不幸的是,我没有其他装有 Win 10 Pro 的 PC 来测试它。

我也用 Python 3.6.3 试过,结果相同。

编辑:

也尝试使用 PowerShell Start-Process python-3.5.4-amd64.exe -ArgumentList /passive , PretendPath=1 得到相同的结果。

还在几台 Windows 10 的 PC 上进行了测试,结果相同,所以问题不仅仅出现在一台 PC 上

编辑: 当然,所有尝试都是 运行 作为管理员。

尝试使用 powershell 来做到这一点

Start-Process -NoNewWindow .\python.exe /passive

确保您使用的是提升的命令提示符(即:运行 作为管理员)。

Have you tried to use the InstallAllUsers argument. By default it is set >to 0 so try to use it like this (which is the same example from [here][1]):

python-3.6.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 it migth make a difference to use the /quiet over /passive

[1]: https://docs.python.org /3.6/using/windows.html#installing-without-ui "the link you supplied"

回答 Erik Šťastný 的评论,我认为解决您的问题的一个好方法是将 python 与您的程序打包在一起,以确保预安装所有必需的库。

好的,从我的角度来看,这似乎是 Python 安装程序中的错误,我找不到任何方法让它工作。

我找到了以下解决方法:

在位于 C:\Windows 的本地计算机上使用 py.exe 它是所有版本 Python 的包装器,因此您可以直接从 CMD 运行 任何地方谢谢to C:\Windows 是Path变量的标准内容。

py -3.5 -c "import sys; print(sys.executable[:-10])"

这给了我 python 3.5 安装目录。

然后我通过以下方式手动将其设置为路径:

setx Path %UserProfile%";PythonLocFromPreviousCommand

我还尝试了 python 安装程序的命令行选项并注意到了与您相同的问题,这是我找到的解决方案:

  1. 从此处下载 64 位安装程序:https://www.python.org/downloads/windows/ (link 的标题为“Windows x86-64 可执行安装程序”)
  2. 卸载所有当前 python 安装。
    • 您可以使用此命令:START python-3.8.3-amd64.exe /uninstall
    • (将python-3.8.3-amd64.exe替换为您下载的文件名)。
    • (运行 cmd 或您的批处理文件作为管理员,由 right-clicking,然后 运行 作为管理员)。
  3. 为所有用户安装(以管理员身份)python64 位,使用 START 命令
    START python-3.8.3-amd64.exe /passive PrependPath=1 Include_pip=1 InstallAllUsers=1
  4. (可选)打开一个新的 cmd window 以验证 python 是否可以在任何位置运行:
    • 您可以运行这个命令:python --version
    • (如果您没有看到类似 "Python 3.8.3" 的输出,则说明 Python 尚未添加到您的 PATH 中)。
    • (注意:在我打开新的命令提示符 window 之前该命令不起作用)。

对我来说,所有的细节都很重要,所以不要跳过任何一个。