A problem about ipython

Vincent Ren renws1990 at gmail.com
Thu Mar 31 21:48:27 EDT 2011


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



But when I use normal python shell, it works well

>>> import settime, timer, set
>>> import profile
>>> profile.run('timer.test(100, settime.setops, set.Set)')
^P^P         675906 function calls in 16.961 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall
filename:lineno(function)
   118500    1.144    0.000    1.144    0.000 :0(append)
        2    0.000    0.000    0.000    0.000 :0(clock)
      500    0.008    0.000    0.008    0.000 :0(range)
        1    0.004    0.004    0.004    0.004 :0(setprofile)
        1    0.000    0.000   16.957   16.957 <string>:1(<module>)
        0    0.000             0.000          profile:0(profiler)
        1    0.000    0.000   16.961   16.961 profile:
0(timer.test(100, settime.setops, set.Set))
     1500    0.380    0.000    2.504    0.002 set.py:13(union)
     3400    0.076    0.000    2.632    0.001 set.py:2(__init__)
     3400    1.620    0.000    2.556    0.001 set.py:20(concat)
   544000    5.940    0.000    5.940    0.000 set.py:26(__getitem__)
     1500    0.060    0.000   14.041    0.009 set.py:27(__and__)
     1500    0.060    0.000    2.564    0.002 set.py:28(__or__)
     1500    7.564    0.005   13.981    0.009 set.py:6(intersect)
      100    0.100    0.001   16.953    0.170 settime.py:4(setops)
        1    0.004    0.004   16.957   16.957 timer.py:1(test)



What's going wrong here?


Regards
Wenshan Ren



More information about the Python-list mailing list