我现在的一个程序所要导入的模块过多,所以我希望用一个for循环将其全部导入,但我如果运行下面的那行代码就会出现ModulesNotFoundError,请问有什么好的解决办法吗?
import os
path = 'H:/TaLk_WItH_Me/imported_modules/'
idmes = [i for i in os.listdir(path)]
for im in idmes:
im1 = im[:-3]
print(im1)#用于检验导入模块名称
import im1
把 import im1 改成 exec(f"import {im1}")
我是使用import_module()函数导入模块的, mod.txt文件存入了两行两个模块名,然后测试了这两个模块名。
参考链接:
我现在的一个程序所要导入的模块过多,所以我希望用一个for循环将其全部导入,但我如果运行下面的那行代码就会出现ModulesNotFoundError-编程语言-CSDN问答
22 个最常用的Python包_小白学视觉的博客-CSDN博客
python读取文件的几种方式_木白星枝的博客-CSDN博客_python读取文件
python - 去除字符串中特定字符 - 简书
python 批量模块导入(笔记) - 雷子-LL - 博客园
Python列表操作函数_骨碌一串的博客-CSDN博客_python列表操作函数
import os
from importlib import import_module
#https://ask.csdn.net/questions/7757457?spm=1005.2025.3001.5141
path = 'F:\\mod.txt' #存放模块名的文件
#https://blog.csdn.net/qq_42722197/article/details/122076762
#idmes = [i for i in os.listdir(path)]
#print(idmes)
#https://blog.csdn.net/qq_42759120/article/details/125283271
#读取模块名文件的内容到列表
file_object1 = open(path,'r')
modules =[]
try:
while True:
line = file_object1.readline()
if line:
print ("line=",line)
#https://www.jianshu.com/p/0597fa008a27
modules.append(line.strip('\n'))
else:
break
finally:
file_object1.close()
#把列表中的模块名批量导入
#https://www.cnblogs.com/thunderLL/p/8120566.html
for m in modules:
locals()[m] = import_module(m) # locals() 已字典形式访问局部命名空间
#测试导入的idna模块
#https://blog.csdn.net/m0_46622095/article/details/123332141
idna.encode('ドメイン.テスト')
# b'xn--eckwd4c7c.xn--zckzah'
print(idna.decode('xn--eckwd4c7c.xn--zckzah'))
#测试导入的jmespath模块
# Get a specific element
d = {"foo": {"bar": "baz"}}
print(jmespath.search('foo.bar', d))
# baz
# Using a wildcard to get all names
d = {"foo": {"bar": [{"name": "one"}, {"name": "two"}]}}
print(jmespath.search('foo.bar[*].name', d))
# [“one”, “two”]