python动态导入模块性能_python – 如何动态导入模块?

我试图在

Python中动态导入模块.现在,我有一个名为’modules’的目录,里面有两个文件;它们是mod1.py和mod2.py.它们是返回时间的简单测试函数(即mod1.what_time(‘now’)返回当前时间).

从我的主应用程序,我可以导入如下:

sys.path.append('/Users/dxg/import_test/modules')

import mod1

然后执行:

mod1.what_time('now')

它的工作原理.

我并不总是知道目录中有哪些模块可用.我想导入如下:

tree = []

tree = os.listdir('modules')

sys.path.append('/Users/dxg/import_test/modules')

for i in tree:

import i

但是我得到错误:

ImportError: No module named i

我希望我遗漏一些简单的东西.感谢任何建议.

最佳答案 导入指令不适用于变量内容(作为字符串)(请参阅扩展说明

here),但使用文件名.如果要动态导入,可以使用

importlib.import_module方法:

import importlib

tree = os.listdir('modules')

...

for i in tree:

importlib.import_module(i)

注意:

>您无法从Lib下未包含模块的目录或类似的当前目录导入(将路径添加到路径将无济于事,请参阅上一个链接了解原因).最简单的解决方案是使这个目录(模块)成为一个包(只需在其中删除一个空的__init__.py文件),并调用importlib.import_module(‘..’i,’modules.subpkg’)或使用__import__方法.

>您也可以查看this question.它讨论了类似的情况.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值