Python 动态导入库
从一个文件夹下遍历所有.py文件,并利用__Import__()函数实现全局导入
例程
python
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() 函数
python
__import__("numpy")
并不会起到类似 import numpy 的作用,运行后仍然会报 " no module named numpy "
正确用法:
python
np = __import__("numpy")
print(np.pi)
此种方式类似:
python
import numpy as np
如果需要类似如下代码的功能,则需参考文章开头的例程:
python
from numpy import *