Модули, импортированные с помощью `exec`, недоступны, если импортированы функцией - PullRequest
0 голосов
/ 28 октября 2018

В 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
>>>

Есть идеи, как заставить эту работу работать внутри функции?

...