Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在for循环中全局导入(首选Python 3.x)_Python_Python 3.x_Python Import_Python Module_Python 3.7 - Fatal编程技术网

Python在for循环中全局导入(首选Python 3.x)

Python在for循环中全局导入(首选Python 3.x),python,python-3.x,python-import,python-module,python-3.7,Python,Python 3.x,Python Import,Python Module,Python 3.7,我的代码是: 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:nam

我的代码是:

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()
这会引发相同的错误:“名称'sys'未定义”,而

很好

您需要将导入的对象存储在某个位置。字典似乎是明智的:

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

我可以理解为什么您可能希望有条件地处理
ffmpy
的导入,但是
os
sys
的导入…?!如果那些不存在…那又怎样@deceze我认为即使没有
try except
块,这个问题也很有趣。@deceze我这么做是因为编程太懒,但我明白你的意思。我只是在那一行写下了要导入的所有内容。可能是重复的。好吧,别偷懒。或者,如果确实需要,可以使用
globals()[module]=\uuuu导入\uuuuu(module)
,然后直接使用
sys
和其他工具,如
sys.path.insert(0,r“C:\Users\david\Desktop\scripts”)
globals()[module] = __import__(module)