本文主要是介绍Python 动态导入库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Python 动态导入库
从一个文件夹下遍历所有.py文件,并利用__Import__()函数实现全局导入
例程
import os # 导入操作系统接口模块
import sys # 导入系统模块# 将当前目录下的 DIR 目录添加到系统路径中,以便后续导入模块
sys.path.append('./DIR')# 定义一个函数,从指定的模块中导入所有不以下划线开头的属性
def import_all_from_module(module_name, fromlist):# 动态导入指定的模块,并获取模块对象module = __import__(module_name, fromlist=fromlist)# 遍历模块中的所有属性for attribute in dir(module):# 如果属性名不以下划线开头if not attribute.startswith('_'):# 将该属性添加到全局命名空间中globals()[attribute] = getattr(module, attribute)# 定义要导入模块的目录路径
directory_path = "./DIR"
# 获取目录下所有以 .py 结尾且不等于 __init__.py 的文件名,并去掉文件扩展名
module_files = [f[:-3] for f in os.listdir(directory_path) if f.endswith(".py") and f != "__init__.py"]# 遍历所有模块文件名
for f in module_files:# 从每个模块文件中导入所有属性import_all_from_module(f, fromlist=['*'])
关于 import() 函数
__import__("numpy")
并不会起到类似 import numpy 的作用,运行后仍然会报 " no module named numpy "
正确用法:
np = __import__("numpy")print(np.pi)
此种方式类似:
import numpy as np
如果需要类似如下代码的功能,则需参考文章开头的例程:
from numpy import *
这篇关于Python 动态导入库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!