7

我正在编写包含以下内容的 Python 2.6/2.7 代码:

try:
    import gmpy
    gmpy_imported=True
except ImportError:
    gmpy_imported=False

if gmpy_imported and gmpy.__file__ is None:
    gmpy_imported=False

我可以理解这try-except部分,它用于查看系统上是否安装了 gmpy——如果没有,则执行任何操作。但是,我不明白为什么if gmpy.__file__ is None需要进行检查;这似乎是多余的。

是否存在导入包看似成功,但包的路径实际上为空的情况?这是对损坏的安装进行仔细检查的故障保护吗?

4

2 回答 2

2

这个检查没有意义。如果模块/包已成功导入,__file__则永远不会没有,它将是模块的路径。

于 2013-02-20T00:25:03.337 回答
2

文档说“__file__静态链接到解释器的 C 模块不存在该属性”,所以我认为它是多余的。此外,它有什么不同,模块对象就在那里。

于 2013-02-20T00:26:34.193 回答