Re: import vs imp and friends.
Christian, Robert, thank you both for the replies, much appreciated. Manu -- http://mail.python.org/mailman/listinfo/python-list
import vs imp and friends.
Greetings, I was looking in the archive of this newsgroup and I found this snippet: import imp sourcecode = 'def foo(x): return 11*x' mod = imp.new_module('foo') exec sourcecode in mod.__dict__ mod.foo(16) Together with similar and sometimes more complete snippets available they show how a module can be created out of string, plain text files and compiled files. Neat! Now the question. Apart from checking sys.module first and eventually adding the new module to it if it isn't there already, and apart from setting __file__, is there anything else that import does and this snippet doesn't? Manu -- http://mail.python.org/mailman/listinfo/python-list
Re: import vs imp and friends.
Emanuele D'Arrigo wrote: Now the question. Apart from checking sys.module first and eventually adding the new module to it if it isn't there already, and apart from setting __file__, is there anything else that import does and this snippet doesn't? The import statement does several things. For instance it holds the import lock to stop other threads from importing the same module again. It also does lots of additional work for packages like relative imports, checking __path__, setting attributes on parent packages and so on. The import system also does a lot of work in order to find and load a module, too. Christian -- http://mail.python.org/mailman/listinfo/python-list
Re: import vs imp and friends.
On 2009-07-23 09:44, Emanuele D'Arrigo wrote: Greetings, I was looking in the archive of this newsgroup and I found this snippet: import imp sourcecode = 'def foo(x): return 11*x' mod = imp.new_module('foo') exec sourcecode in mod.__dict__ mod.foo(16) Together with similar and sometimes more complete snippets available they show how a module can be created out of string, plain text files and compiled files. Neat! Now the question. Apart from checking sys.module first and eventually adding the new module to it if it isn't there already, and apart from setting __file__, is there anything else that import does and this snippet doesn't? Brett Cannon has a good presentation that covers basically the entirety of the import mechanism: http://us.pycon.org/2008/conference/schedule/event/12/ -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list