我从已离开雇主的人那里继承了一些Python脚本。有些是从Jython运行,有些则不是。
我想将它们添加到svn,但在此之前,我想修改这些文件,以便如果从python运行“需要Jython”文件,用户会收到“请使用Jython运行”等消息程序退出。
(警告:我对Python / Jython不太熟悉。)
我希望最简单的方法是使用以下内容创建一个文件require-jython.py
:
if runtime.name != 'jython'
print "Please run with Jython"
exit(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')