繁体   English   中英

批处理两个python版本

[英]Batch for trying two python versions

系统可能只有2.4.5或2.7.9的Python版本。 我正在尝试编写批处理错误处理以尝试首先使用python 2.7.9,如果失败,请使用python 2.4.5。

条件

系统已安装公司安装的软件,并且仅具有Python 2.4.5或Python 2.7.9。 而且我不知道哪一个,所以我的脚本必须向后兼容。

这就是我所拥有的

rem
@echo off

echo Building
"%COMMONPROGRAMFILES%\CompanyName\python\python27\python.exe" build.py

IF ERRORLEVEL 1 GOTO TRY-PYTHON-24
IF ERRORLEVEL 0 GOTO FINISHED-BUILDING

:TRY-PYTHON-24
"%COMMONPROGRAMFILES%\CompanyName\python\python24\python.exe" build.py

IF ERRORLEVEL 0 GOTO FINISHED-BUILDING


:FINISHED-BUILDING:
echo Done
...more code...

预期结果

首先尝试使用Python 2.7.9,如果存在ERRORLEVEL 1 ,则尝试使用Python 2.4.5。 那里不会有错误。 这是编写try except语句的批处理版本(如Python)的正确方法吗?

如..

try:
    ...Python 2.7.9...
except:
    ...Python 2.4.5...

来源

我是根据Microsoft指南( https://support.microsoft.com/en-us/kb/39585 )编写的。 但是我不确定这是否是try的最佳方法, except两个版本的Python except

您可以使用IF EXIST

set "p279="%COMMONPROGRAMFILES%\WatchGuard\python\python27\python.exe""
set "p245="%COMMONPROGRAMFILES%\WatchGuard\python\python24\python.exe""

if exist %p279% (
   set "python=%p279%"
) else (
  set "python=%p245%"
)

call %python% build.py

我不能说批处理文件中try-except构造的一般情况,但是有一个解决这个特殊问题的简单得多的方法:使用PATH变量。 显示的代码可以替换为

@echo off
set "PATH=%PATH%;%COMMONPROGRAMFILES%\WatchGuard\python\python27"
set "PATH=%PATH%;%COMMONPROGRAMFILES%\WatchGuard\python\python24"
python build.py || exit /b

rem ... more code ...

以这种方式设置PATH可使批处理文件解释器自动在可能存在的两个目录中查找python.exe 如果同时安装了两个版本的Python,它将使用列表中较早的版本,即...\\python27 (请注意,这意味着如果在调用脚本时已在PATH中显示的目录中安装了其他版本的Python,则将使用该版本。这可能就是以此方式设置系统的人想要的。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM