如何testing一个Python模块是否已被导入?
如何testing一个模块是否已被导入python?
例如我需要的基础知识:
if not has_imported("sys"): import sys
也
if not has_imported("sys.path"): from sys import path
谢谢!
RGS。
感谢您的所有意见:代码已粘贴在这里。 自动导入文件夹中的所有子模块,然后调用相同的名称函数 – python运行时检查相关
如果你想通过不导入东西两次来优化,那么省去麻烦,因为Python已经处理好了。
如果你需要这样做,以避免名称错误或什么:修复你的草率编码 – 确保你不需要这个,即定义(导入)所有东西之前,你曾经使用它(如果import:一旦在启动,在模块级)。
如果你有一个很好的理由: sys.modules
是一个包含所有已经导入的模块的字典。 但是它只包含模块,并且由于from <module> import <variable>
工作的方式(像往常一样导入整个模块,从中导入所有东西), from sys import path
只会将sys
添加到sys.modules
如果它尚未在启动时导入)。 from pkg import module
添加pkg.module
就像您所期望的那样。
我觉得已经被接受的答案是不完全正确的。
当多次导入相同的模块时,Python 仍然有开销 。 Python 不会给你一个错误 ,但是这并不意味着它不会减慢你的脚本。 正如您将从下面的URL中看到的,多次导入模块时会产生大量开销。
例如,在某种情况下,除特定条件外,您可能不需要某个模块,如果该模块较大或开销较高,则只有条件导入才有意义。 这并不意味着你是一个草率的编码器。
https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Import_Statement_Overhead
from sys import modules try: module = modules[module_name] except KeyError: __import__('m')
这是我在运行时更改代码的解决scheme!