Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果从错误的解释器调用python脚本,如何快速使其失败?_Python_Jython - Fatal编程技术网

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

如果从错误的解释器调用python脚本,如何快速使其失败?,python,jython,Python,Jython,我从离开我雇主的人那里继承了一些Python脚本。有些是从Jython那里跑出来的,有些不是 我想将它们添加到svn中,但在添加之前,我想修改这些文件,以便在从python运行“requires Jython”文件时,用户会收到类似“please run with Jython”的消息,程序将退出 (警告:我不太熟悉Python/Jython。) 我希望最简单的方法是创建一个文件require jython.py,其内容如下: if runtime.name != 'jython' pri

我从离开我雇主的人那里继承了一些Python脚本。有些是从Jython那里跑出来的,有些不是

我想将它们添加到svn中,但在添加之前,我想修改这些文件,以便在从python运行“requires Jython”文件时,用户会收到类似“please run with Jython”的消息,程序将退出

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

我希望最简单的方法是创建一个文件
require jython.py
,其内容如下:

if runtime.name !=  'jython'
  print "Please run with Jython"
  exit(1) 
然后是“包括/要求”?这个文件(再说一遍,我不是专家,请耐心听我说)


有人能为我详细说明一下步骤吗?

我所看到的是,尝试导入一个特定版本或实现专用的模块,如果该模块不存在,则引发
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一点也不熟悉

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

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


我所看到的是尝试导入一个特定版本或实现的专用模块,如果该模块不存在,则引发
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一点也不熟悉

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

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


为什么需要用Jython运行代码?如果您在不同的解释器中运行它,会有什么样的情况中断?Jython代码会调用Java。@nosklo。这些失败可能具有误导性。就像一个语法错误。如果我知道问题的原因,在问题发生之前,我应该采取一些措施,并将问题告知脚本用户。我很好奇,为什么不能使用jython运行所有程序?只是想注意,您不想将此文件命名为
require jython.py
,连字符不是模块名称中的有效字符。为什么需要代码与Jython一起运行?如果您在不同的解释器中运行它,会有什么样的情况中断?Jython代码会调用Java。@nosklo。这些失败可能具有误导性。就像一个语法错误。如果我知道问题的原因,在问题发生之前,我应该采取一些措施,并将问题告知脚本用户。我很好奇,为什么不能使用jython运行所有程序?只是想注意,您不想命名此文件
require jython.py
,连字符在模块名称中不是有效字符。同意,您不应该直接测试解释器,只要您需要的模块可用。如果您想通知用户他可能使用了错误的解释器,我更希望使用print,然后重新抛出原始异常,以防用户知道他在做什么,但忘记安装模块,他知道缺少什么。Jython可以使用java包。因此,导入java就足够了。您正在寻找的特殊模块是java.sys.subversion,Jython(或我的版本)中缺少该模块。这是我简要研究的内容之一。同意,您不应该直接测试解释器,只要您需要的模块可用。如果您想通知用户他可能使用了错误的解释器,我更希望使用print,然后重新抛出原始异常,以防用户知道他在做什么,但忘记安装模块,他知道缺少什么。Jython可以使用java包。因此,导入java就足够了。您正在寻找的特殊模块是java.sys.subversion,Jython(或我的版本)中缺少该模块。这是我简要研究过的事情之一。