gpt4 book ai didi

Python 在 for 循环中全局导入(最好是 Python 3.x)

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:43 24 4
gpt4 key购买 nike

我的代码是这样的:

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' 未定义。我不知道我做错了什么,但希望你知道。

编辑:这个问题不是重复的,因为我不“只是”想从字符串中导入,而是从 for 循环中导入。我基本上想在全局循环中从字符串导入。

最佳答案

我认为问题在于,尽管您已经导入了库 sys,但您还没有定义对象 sys

考虑以下两个示例:

# Doesn't work
__import__('sys')
sys.callstats()

这会抛出同样的错误:“name 'sys' is not defined”,而

# 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

关于Python 在 for 循环中全局导入(最好是 Python 3.x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com