检查方法是否被导入,from X import Y

Check if method is imported, from X import Y

在 Python 3.7 中,我想导入一些方法并稍后在同一脚本中使用它们。在此之前,我想检查一下它们是否正确导入。

根据 的回答,我可以检查模块是否已完全导入到脚本中,但是如果我只使用 form from X import Y 导入一个方法怎么办?

我做了什么

我完成了以下片段:

from shapely.geometry import asShape
from shapely.geometry import Point
import sys

if 'shapely.geometry.asshape' in sys.modules:
  print('Shapely Geometry asshape ok')
else:
  print('Shapely Geometry asshape NOT loaded')
  
if 'shapely.geometry.point' in sys.modules:
  print('Shapely Geometry point ok')
else:
  print('Shapely Geometry point NOT loaded')

这给了我以下结果:

Shapely Geometry asshape NOT loaded

Shapely Geometry point ok

重复问题

我不认为这是一个重复的问题,因为这里关于 SO 的所有其他问题都是关于检查是否导入了一个模块(格式为 import Z),而不仅仅是一些方法。

无论是只从一个模块导入一个函数,还是导入整个模块本身,整个模块总是导入到 sys.modules。因此,在您的情况下,您必须检查导入的模块而不是函数:

'shapely.geometry' in sys.modules

看看这个问题 'import module' vs. 'from module import function'

内置函数 dir() 将为您提供一个包含所有导入的列表。您本地导入的函数也会出现在那里。您可以检查使用:

'myFunction' in dir ()