Conversion: execfile --> exec
Rustom Mody
rustompmody at gmail.com
Mon Jun 13 13:45:50 EDT 2016
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
More information about the Python-list
mailing list