代码之家  ›  专栏  ›  技术社区  ›  Mark Bolusmjak

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

  •  0
  • Mark Bolusmjak  · 技术社区  · 14 年前

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

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

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

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

    然后“包括/要求”?这个文件(我又不是专家。请耐心听我说)

    有人能给我拼一下步骤吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Escualo    14 年前

    我所看到的是尝试将一个模块独占地导入到给定的版本或实现中,并引发 ImportError

    想象一下Jython( 而不是蟒蛇 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')