Python: 导入成功时__file__会是None吗?

7 投票
2 回答
701 浏览
提问于 2025-04-17 16:26

我正在处理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 个回答

2

文档上说“对于静态链接到解释器中的C模块,__file__属性是不存在的”,所以我觉得这个属性是多余的。而且,这有什么区别呢,模块对象本身已经存在了。

2

这个检查没有意义。如果模块或包已经成功导入,__file__ 的值绝对不会是空的,它会是这个模块的路径。

撰写回答