所以,我正在为一个我正在上课的项目工作。到目前为止,我有两个文件。 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是否导入了导入它的文件。
答案 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
所以不要打扰!只需导入。