Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #2361
| From | Robert Kern <robert.kern@gmail.com> |
|---|---|
| Subject | Re: A problem about ipython |
| Date | 2011-04-01 10:16 -0500 |
| Organization | The Church of Last Thursday |
| References | <43e40bbd-ae57-47dd-9e03-2d480278e4b6@j11g2000prn.googlegroups.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.78.1301671014.2990.python-list@python.org> (permalink) |
On 3/31/11 8:48 PM, Vincent Ren wrote:
> Hey, everyone, I'm trying to use ipython recently. It's very nice,
> however, when I run this(from Programming Python 3rd) in ipython, I'll
> get a NameError:
>
>
> In [1]: import settime, timer, set
>
> In [2]: import profile
>
> In [3]: profile.run('timer.test(100, settime.setops, set.Set)')
> ---------------------------------------------------------------------------
> NameError Traceback (most recent call
> last)
>
> /home/vincent/hacking/python/<ipython console> in<module>()
>
> /usr/lib/python2.6/profile.pyc in run(statement, filename, sort)
> 68 prof = Profile()
> 69 try:
> ---> 70 prof = prof.run(statement)
> 71 except SystemExit:
> 72 pass
>
> /usr/lib/python2.6/profile.pyc in run(self, cmd)
> 454 import __main__
> 455 dict = __main__.__dict__
> --> 456 return self.runctx(cmd, dict, dict)
> 457
> 458 def runctx(self, cmd, globals, locals):
>
> /usr/lib/python2.6/profile.pyc in runctx(self, cmd, globals, locals)
> 460 sys.setprofile(self.dispatcher)
> 461 try:
> --> 462 exec cmd in globals, locals
> 463 finally:
> 464 sys.setprofile(None)
>
> /usr/lib/pymodules/python2.6/IPython/FakeModule.pyc in<module>()
>
> NameError: name 'timer' is not defined
In order to support pickling and its %run feature, IPython makes a fake __main__
module. It looks like profile.run() explicitly imports __main__ to try to run
the statement there. Honestly, it's been a thorn in our side for a long time,
but it's a confusing bit of the code. Most interactive shells actually written
in Python are going to have a similar need to do a workaround, since they
already have a __main__. The regular shell is not written in Python, so it has
no problem.
You will want to ask on the IPython list for future IPython questions.
http://mail.scipy.org/mailman/listinfo/ipython-user
--
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
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
A problem about ipython Vincent Ren <renws1990@gmail.com> - 2011-03-31 18:48 -0700
Re: A problem about ipython Robert Kern <robert.kern@gmail.com> - 2011-04-01 10:16 -0500
Re: A problem about ipython Vincent Ren <renws1990@gmail.com> - 2011-04-02 15:19 -0700
csiph-web