On Monday, June 13, 2016 at 10:48:33 PM UTC+5:30, Michael Selik wrote: > On Mon, Jun 13, 2016, 10:36 AM Rustom Mody wrote: > > > On Monday, June 13, 2016 at 7:41:33 PM UTC+5:30, MRAB wrote: > > > On 2016-06-13 14:24, Long Yang wrote: > > > > The python 2.x command is as following: > > > > --------------------------- > > > > info = {} > > > > execfile(join('chaco', '__init__.py'), info) > > > > ------------------------------ > > > > > > > > But execfile has been removed in python 3.x. > > > > So my problem is how to convert the above to a 3.x based command? > > > > > > > > thanks very much > > > > > > > Open the file and pass it to exec: > > > > > > info = {} > > > with open(join('chaco', '__init__.py')) as file: > > > exec(file.read(), info) > > > > > > I wonder whether this should use importlib instead [yeah really > > wondering... > > not a rhetorical question] > > > > See slide 38-40 http://www.slideshare.net/pydanny/python-worst-practices > > > The slides you're referencing are saying importlib is better than exec'ing > an import. The question of this thread was more general. An import makes a > module object, but exec'ing arbitrary source does not (unless it uses > import).
True but the supplied code: info = {} execfile(join('chaco', '__init__.py'), info) looks (to me) like an intent to import the package chaco with no locals and globals -- Just guessing of course -- https://mail.python.org/mailman/listinfo/python-list