Python 动态导入库

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 *
相关推荐
北斗落凡尘3 小时前
LangGraph 入门实战(2)
python·langchain
ttod_qzstudio4 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
jufeng13075 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 1 篇】
人工智能·python·架构·agent
月光船幽幽6 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
_oP_i8 小时前
python 后缀 mjs文件
开发语言·python
北斗落凡尘8 小时前
如何使用LangGraph(1)
python·langchain
Livia要学习9 小时前
Python装饰器
开发语言·python
大模型丫丫10 小时前
LangChain4j:Java 生态的 AI 应用开发利器
java·人工智能·python
circuitsosk10 小时前
向量数据库选型与性能压测:Milvus、Pinecone、Chroma在真实业务下的对比
数据库·python·pinecone·milvus·向量数据库·chroma
雾时之林11 小时前
python--字符串
开发语言·python