В Python 3, когда я импортирую модуль, используя exec
в глобальной области видимости, он работает.Но когда я делаю это внутри функции, даже при отсутствии ошибки импорта 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
>>>
Есть идеи, как заставить эту работу работать внутри функции?