使用特定的TargetDir在/quiet模式下安装Python可执行文件

使用特定的TargetDir在/quiet模式下安装Python可执行文件,python,installation,appveyor,Python,Installation,Appveyor,在AppVeyor上安装python 3.5.0+时遇到问题。我用来调用子流程的参数。check_output是: [u'python-3.6.3-amd64.exe', u'/quiet', u'TargetDir=C:\\Python363-x64', u'AssociateFiles=0', u'Shortcuts=0', u'Include_doc=0', u'Include_launcher=0', u'InstallLauncherAllUsers=0', u'Inc

在AppVeyor上安装python 3.5.0+时遇到问题。我用来调用
子流程的参数。check_output
是:

[u'python-3.6.3-amd64.exe',
 u'/quiet',
 u'TargetDir=C:\\Python363-x64',
 u'AssociateFiles=0',
 u'Shortcuts=0',
 u'Include_doc=0',
 u'Include_launcher=0',
 u'InstallLauncherAllUsers=0',
 u'Include_tcltk=0',
 u'Include_test=0']
安装程序返回一个非零状态代码,其中包含以下日志文件:

(很抱歉使用pastebin,它很长,显然stackoverflow有字符限制)

安装程序退出后,请求的
TargetDir
C:\\Python363-x64
)中不会安装python。实际上,甚至没有创建目录,如果我事先手动创建它也没有帮助

我尝试先运行
/uninstall
(因为appveyor的版本已经安装,所以可能会跳过安装),但同样的问题仍然存在。我尝试了
/passive
/quiet
两种选项。我也在其他python版本(3.5.0+)上尝试过这一点,但运气不佳。(早期版本有
.msi
安装程序,安装正确)


我想知道是否有其他人可以重现此问题,或者您是否知道我做错了什么。

这是在AppVeyor环境中安装Python 3.6.4的PowerShell脚本示例:

Write-Host "Installing Python 3.6.4 x64..." -ForegroundColor Cyan
Write-Host "Downloading..."
$exePath = "$env:TEMP\python-3.6.4-amd64.exe"
(New-Object Net.WebClient).DownloadFile('https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64.exe', $exePath)
Write-Host "Installing..."
cmd /c start /wait $exePath /quiet TargetDir=C:\Python36-x64 Shortcuts=0 Include_launcher=1 InstallLauncherAllUsers=1

可以根据您的需要随意采用它。

在我的例子中,使用
DefaultAllUsersTargetDir
和/或
DefaultJustForMeTargetDir
而不是在Powershell脚本中工作的
TargetDir

AppVeyor build workers上已经预装了多个Python版本:是,但是我需要在一些特定的python版本上运行一些测试,这些版本不是每安装一次的。谢谢!似乎需要使用cmd。知道为什么它不能直接在ps中工作吗<代码>PS>&“$exePath”/quiet…?