使用静默安装程序(.msi)在Windows上安装python 2.7时,是否有一个命令行选项将Python添加到路径环境变量,如GUI选项?
Python 3.5安装程序默认包含一个选项PrependPath = 0,但Python 2.7可以使用它吗?
https://docs.python.org/3/using/windows.html
这里讨论了这个问题,但是没有解决Python 2.7的问题?
https://bugs.python.org/issue3561
修改
这批命令摇滚!!!
setx \ M PATH"%PATH%; C:\ Python \ Python27; C:\ Python \ Python27 \ Scripts"
但是setx会将存储的%PATH%字符串截断为1024字节。
答案 0 :(得分:11)
Python MSI安装程序可以自2.4起更新系统路径。只需将 ADDLOCAL = ALL 添加到命令行即可。您必须在传播之前重新启动系统。
msiexec /i "python-2.7.11.amd64.msi" /passive /norestart ADDLOCAL=ALL
答案 1 :(得分:1)
我观察到,在Windows 7(专业版)和python 2.7.14 x64上,不需要重新启动即可将Python添加到PATH。只需在安装后启动一个新的命令窗口,然后python就会出现在PATH中。
您可以通过运行msi来确定安装是否需要重新启动:
const passUserIdOnlyToACallback = function(userRecord, callbackFunction) {
console.log("serializing...");
callbackFunction(null, userRecord.id);
};
passport.serializeUser(passUserIdOnlyToACallback);
function passUserRecordToCallbackById(userId, verifyCallback) {
db.users.findInDatabaseById(userId, function(error, userRecord) {
console.log("deserializing...");
if (error) return verifyCallback(error);
verifyCallback(null, userRecord)
})
}
passport.deserializeUser(passUserRecordToCallbackById);
也就是说,如果start/wait "" msiexec /i "python-2.7.11.amd64.msi" /passive /norestart ADDLOCAL=ALL
if %errorlevel% == 3010 ( echo Success: reboot required ) else (if %errorlevel% == 0 ( echo Success ) else ( echo Installation failed with error code %errorlevel% ) )
为3010(ERROR_SUCCESS_REBOOT_REQUIRED),则将需要重新启动。使用%errorlevel%
会使cmd.exe等待直到msiexec进程完成。这使msiexec返回状态可用于cmd.exe。
顺便说一句,如果您希望系统中的所有用户都可以使用Python安装,则可能希望在命令行中包含选项start/wait
。