Python:如果导入成功,__ file__可以为None吗?

时间:2013-02-20 00:17:09

标签: python import

我正在使用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检查是必要的;这似乎是多余的。

是否有任何情况下导入包似乎已成功,但包的路径实际上是空的?这次仔细检查是否可以防止安装损坏?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

文档说“对于静态链接到解释器的C模块,__file__属性不存在”,所以我认为这是多余的。除此之外,模块对象还有什么区别。