Rie*_*ics 3 python python-module python-import python-3.x python-3.7
我的代码是这样的:
for module in ["ffmpy","os","sys"]:
try:
__import__(module)
except:
print("Can't import ["+module+"]")
Run Code Online (Sandbox Code Playgroud)
所以,我想全局导入它,但它似乎没有这样做.在这段代码之后,我有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()
Run Code Online (Sandbox Code Playgroud)
这会引发同样的错误:"name'sys'未定义",而
# Works
sys = __import__('sys')
sys.callstats()
Run Code Online (Sandbox Code Playgroud)
工作良好.
您需要将导入的对象存储在某处.字典似乎合情合理:
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")
Run Code Online (Sandbox Code Playgroud)
应该管用.
编辑:
正如@ 9769953在评论中所建议的那样,更好的解决方案是使用:
globals()[module] = __import__(module)
Run Code Online (Sandbox Code Playgroud)
然后允许您像平常一样sys直接访问.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |