[英]Python globally import in a for loop (preferrably Python 3.x)
我的代码是这样的:
for module in ["ffmpy","os","sys"]:
try:
__import__(module)
except:
print("Can't import ["+module+"]")
所以,我想全局导入它,但它似乎没有这样做。 在这段代码之后,我有sys.path.insert(0, r"C:\\Users\\david\\Desktop\\scripts")
,python控制台告诉我: NameError: name 'sys' is not defined
。 我不知道我做错了什么,但你希望这样做。
编辑:这个问题不重复,因为我不只是想从字符串导入,而是从for循环中执行。 我基本上想要从一个循环中的字符串全局导入。
我认为问题在于,虽然您已导入库sys
,但您尚未定义对象sys
。
请考虑以下两个示例:
# Doesn't work
__import__('sys')
sys.callstats()
这会引发同样的错误:“name'sys'未定义”,而
# Works
sys = __import__('sys')
sys.callstats()
工作良好。
您需要将导入的对象存储在某处。 字典似乎合情合理:
import_dict = dict()
for module in ["ffmpy","os","sys"]:
try:
import_dict[module] = __import__(module)
except:
print("Can't import ["+module+"]")
import_dict['sys'].path.insert(0, r"C:\Users\david\Desktop\scripts")
应该管用。
编辑:
正如@ 9769953在评论中所建议的那样,更好的解决方案是使用:
globals()[module] = __import__(module)
然后允许您sys
直接访问sys
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.