使用特定的TargetDir在/quiet模式下安装Python可执行文件
在AppVeyor上安装python 3.5.0+时遇到问题。我用来调用使用特定的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
子流程的参数。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…?