Python:停止阅读包

时间:2015-09-01 17:26:12

标签: python

我想知道如何停止阅读包裹。

例如,

#!/usr/bin/python
import os
FLAG= True if 'TEST' in os.environ else False
if not FLAG:  return

def test():
  print 'test is defined'

但实际上'返回'失败了:

SyntaxError: 'return' outside function

目的是检查一些系统依赖性,如果不满意,请停止阅读包。

sys.exit(0)不起作用,因为它会停止整个程序。

另一种解决方案可能是决定导入或不导入OUTSIDE包,例如:

FLAG= True if 'TEST' in os.environ else False
if FLAG:  import THE_PACKAGE

但我认为这个决策在包装内部更好,因为这是常见的过程。

有没有什么好办法,比如来自套餐的“退货”?

感谢。

1 个答案:

答案 0 :(得分:2)

简而言之 - 你无法做到。有一些(hacky)解决方法。例如你可以raise ImportError并依赖用户捕获它,或者你可以定义函数体中的所有东西,只有在满足条件时才会执行:

def _main():
    class Foo(object):
        pass
    global Foo

    ...

if condition:
    _main()

这不是我的建议(很快就会非常繁琐)。

" best"我可以想到的例子是python的os包 - 我建议你研究那里提供的方法。基本上,它们检测系统,然后使用os将满足相应接口的函数导入from XYZ import *命名空间。这是您(或多或少)已在您的问题中描述的解决方案,并且我肯定会建议您这样做。