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 *
相关推荐
充钱大佬4 小时前
Python测试基础教程
python·log4j·apache
初心丨哈士奇7 小时前
Python 四大基础容器|列表篇
python
明理的信封8 小时前
AI 基础设施的“去 Python 化“:Rust 与 C# 的两条替代路径
人工智能·python·rust
麻雀飞吧9 小时前
2026年AI量化开发,先跑通小流程再加复杂功能
人工智能·python
daphne odera�9 小时前
PyCharm 中 Codex 插件启动失败:unknown variant default 的解决方法
python·chatgpt·pycharm
nbu04william9 小时前
Deepseek-api省token的用法
python·大模型·token·deepseek
测试老哥10 小时前
Pytest自动化测试详解
自动化测试·软件测试·python·测试工具·测试用例·pytest·接口测试
坚持学习前端日记10 小时前
国产化适配全流程适配英伟达本地开发
人工智能·python
源图客11 小时前
云途物流API开发-鉴权认证(Java)
java·网络·python
三川69811 小时前
Tkinter库的学习记录06-变量类别
python