python - 如果由函数导入,则使用 `exec` 导入的模块不可用
问题描述
exec
在 Python 3 中,当我在全局范围内使用导入模块时,它可以工作。但是当我在函数中执行此操作时,即使我没有收到导入错误,Python 也无法识别模块名称。
导入使用 sys
成功,在全局范围内:
>>> sys.argv
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> exec('import sys')
>>> sys.argv
['']
没有导入错误,但无法使用os
从函数导入的内容:
>>> def import_os():
... exec('import os')
... os.listdir('.')
...
>>> import_os()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in import_os
NameError: name 'os' is not defined
>>>
知道如何在函数内完成这项工作吗?
解决方案
推荐阅读
- python - 为什么我在连接到远程服务器时收到“getaddrinfo failed”?
- python - 基于 Python 的 exe 在 CMD 处抛出错误(pynput 模块)
- javascript - CSS Onclick 关闭(不显示) 不工作,响应式设计
- c# - 带有模板命令绑定的自定义 ListboxItem
- java - Gradle 无法将 sysout 写入文件 - java.io.IOException:无法删除文件
- c# - 如果我只更改一个,为什么所有列表(在列表中)的值都会改变?
- c++ - 为什么下面的代码打印“AA”而不是“A”?
- python - 为什么 Python 内置数字类型和十进制模块在同一操作上有所不同?
- .net - F# 编译器插件,如 haskell 或
- excel - 通过 VBA 从 Excel 中的主范围中查找范围子集组合