如果从错误的解释器调用python脚本,如何快速失败?

时间:2010-09-16 16:11:51

标签: python jython

我从已离开雇主的人那里继承了一些Python脚本。有些是从Jython运行,有些则不是。

我想将它们添加到svn,但在此之前,我想修改这些文件,以便如果从python运行“需要Jython”文件,用户会收到“请使用Jython运行”等消息程序退出。

(警告:我对Python / Jython不太熟悉。)

我希望最简单的方法是使用以下内容创建一个文件require-jython.py

if runtime.name !=  'jython'
  print "Please run with Jython"
  exit(1) 

然后“包含/要求”?这个文件(我再也不是专家。请跟我一起来)

有人可以为我拼出这些步骤吗?

1 个答案:

答案 0 :(得分:3)

我所看到的是尝试导入专用于给定版本或实现的模块,如果模块不存在则引发ImportError

想象一下,Jython(而不是Python )有一个名为special的模块,然后你添加:

# at the top of your module:
try:
   import special
except ImportError:
   raise ImportError("this script is meant to be used with Jython")
else:
   raise

请注意,您将ImportError异常更明确,而不是简单地提高它(并引导用户相信模块本身存在问题,而不是通知解释器未正确选择)。我会给你一个更具体的例子来说明要导入的模块,但我对Jython并不熟悉。

换句话说,使用duck typing进行模块导入:假设导入正确,但是一旦找不到预期的行为就会失败(这就是try语句应该是什么用于)。

检查解释器的另一种方法是使用sys模块(在Python中 - 我不知道Jython是否拥有它):

>>> import sys
>>> print sys.subversion
('CPython', 'tags/r264', '75821M')