1

In Python 3, when I import a module using exec in the global scope, it works. But when I do it within a function, even though I get no import error, Python does not recognize the module name.

Importing and using sys successfully, in the global scope:

>>> sys.argv
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> exec('import sys')
>>> sys.argv
['']

No import error, though cannot use os which has been imported from a function:

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

Any idea how to make this work from within a function?

SomethingSomething
  • 11,491
  • 17
  • 68
  • 126

0 Answers0