Python模块检查是否

时间:2014-02-05 17:30:36

标签: python module

所以,我正在为一个我正在上课的项目工作。到目前为止,我有两个文件。 Spark.py和main.py.在我的主文件中,我有:

import os
import csv

from Spark import *

Spark.py需要导入os模块,但它已经在main.py中导入,所以我不想再导入它。但是我希望Spark检查main.py是否导入了os,所以如果没有spark.py会导入它。

我试图通过检查是否在globals().keys()中检查是否导入了os但是当我尝试时我意识到它不在那里因为它没有在Spark.py导入我环顾四周并且不能找到我想要的东西(主要是因为我不确定要搜索什么)。

Spark.py或导入的模块是否有办法检查是否导入了另一个模块?比如Spark.py检查main.py是否导入了导入它的文件。

2 个答案:

答案 0 :(得分:1)

所有导入的模块都缓存在sys.modules

In [1483]: 'os' in sys.modules
Out[1483]: True

所以{2}文件中的import os不会两次导入os模块。

请注意,模块本身已被缓存,而不是别名:

In [1484]: import os as oops

In [1485]: 'oops' in sys.modules
Out[1485]: False

答案 1 :(得分:0)

我不认为这样做是值得的。要检查模块是否已导入,您可以在sys.modules中查找该模块。然而,它似乎比重新导入它更快:

 >>> %timeit import os
 1000000 loops, best of 3: 446 ns per loop
 >>> %timeit if 'os' in sys.modules: import os
 1000000 loops, best of 3: 547 ns per loop

所以不要打扰!只需导入。