[IPython-user] Can "import" module, then "run" cannot find it
Jörgen Stenarson
jorgen.stenarson@bostream...
Mon Feb 22 13:05:13 CST 2010
Thomas Baker skrev 2010-02-21 04:37:
> Dear all,
>
> I love IPython, especially (as a former awk user) now that I
> have discovered the brilliant [1].
>
> However, after extensive reading, Googling, and searching in
> online documentation, I cannot understand why I should be able to
> _import_ a module -- i.e., the module is in the path and is found --
> but then not be able to _run_ it.
>
> -- The pathname of the module is /home/tbaker/shawkle/shawkle.py.
>
> -- The directory of test data is at /home/tbaker/shawkle/testdata.
> This is where I want to run ipython (and shawkle), because
> shawkle.py is designed to access data in the Working Directory.
>
> This is what happens:
>
> /home/tbaker/shawkle/testdata> ipython # I start IPython
> Python 2.5.2. ... blah blah...
>
> In [2]: import sys
>
> In [3]: print sys.path
> ['', '/usr/bin', ... '/home/tbaker/shawkle'] # '/home/tbaker/shawkle' is in search path
>
> In [4]: pwd # I am indeed in '/home/tbaker/shawkle/testdata'
> Out[4]: '/home/tbaker/shawkle/testdata'
>
> In [5]: import shawkle # "import" finds 'shawkle.py' with no problem
>
> In [6]: edit shawkle # editing 'shawkle.py' works fine
> Editing... done. Executing edited code... # vim shows me I am editing '~/shawkle/shawkle.py'
>
> In [7]: edit shawkle.datashuffle # editing a particular function works fine
> Editing... done. Executing edited code... # vim says I am editing ~/shawkle/shawkle.py'
>
> In [8]: run shawkle
> ERROR: File 'shawkle.py' not found. # So why can it now not find 'shawkle.py'??
>
> In [9]: run ../shawkle.py # Giving a relative reference seems to work...
>
> My question is: how is it that IPython can find shawkle.py to import it,
> edit it, and execute the edited code, but is unable to find the same file
> in order to "run" it?
>
> I have tried adding '~/shawkle' to the search path as well
> (using sys.path.append), but that does not fix the problem.
>
> I have also tried putting a special PYTHONPATH in my bash
> profile, but that also does not seem to make a difference, and I
> have commented it out (leaving just PATH).
>
> I use python 2.5.2-1 and cygwin 1.7.1-1 with Windows XP.
>
The reason for your confusion is that sys.path is the path used for the
python import mechanism but the run magic of ipython only looks in the
current directory.
/Jörgen
More information about the IPython-user
mailing list