Why does my python not add current working directory to the path?

Question:

I keep seeing sites mentioning that the directory that you execute ‘python ‘ get added to the python path. For example on http://www.stereoplex.com/blog/understanding-imports-and-pythonpath, the author cd’s to the /tmp folder then does ‘print(sys.path)’ and lo and behold, the /tmp folder appears in the path list. Here is me trying this out on my system (with 2.6.6 installed):

example structure:

app/
  mymodule.py
  inner_folder/
    myscript.py

in myscript.py contains the line:

import mymodule.py

what I did:

cd app
python inner_folder/myscript.py # ImportError

Since I am executing the interpreter from the app/ directory, shouldn’t ‘app’ be added to the python path? This is how a lot of the docs I have been reading have specified the behaviour should be.

Please enlighten!

(I have temporarily solved this by manually adding the folder I want into the environment but don’t want to rely on that forever. Since many sites say this can be done, I’d like to reproduce it for myself)

Asked By: trinth

||

Answers:

Whether or not the current directory is in sys.path, import statements usually look like:

import mymodule

The code you wrote looks like:

import 'mymodule.py'
Answered By: André Caron

It is the script’s directory that is added, not the current directory. If you turn inner_folder/ into a package then you can use python -m inner_folder.myscript in order to run the script while having app/ added to sys.path.

Check that the module directory is not empty. That may sound stupid, but in my case I hadn’t realised that it was a git submodule and hadn’t cloned recursively.

Answered By: Anthony Hayward
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.