14

I want to run third part tool written in python on my ubuntu machine (corgy tool).

However I don't know how to add additional modules to Python path.

cat doc/download.rst         
There is currently no setup.py, so you need to manually add
the download directory to your PYTHON_PATH environment variable.

How can I add directory to PYTHON_PATH?

I have tried:
export PYTHON_PATH=/home/user/directory:$PYTHON_PATH && source .bashrc
export PATH=/home/user/directory:$PATH && source .bashrc

python
import sys
sys.path.append("/home/user/directory/")

But when I try to run this tool I get:

Traceback (most recent call last):
File "examples/dotbracket_to_bulge_graph.py", line 4, in <module>
import corgy.graph.bulge_graph as cgb
ImportError: No module named corgy.graph.bulge_graph
rypel
  • 4,686
  • 2
  • 25
  • 36
pogibas
  • 27,303
  • 19
  • 84
  • 117

2 Answers2

14

Create a .bash_profile in your home directory. Then, add the line

PYTHONPATH=$PYTHONPATH:new_dir
EXPORT $PYTHONPATH

Or even better:

if [ -d "new_dir" ] ; then
  PYTHONPATH="$PYTHONPATH:new_dir"
fi
EXPORT $PYTHONPATH

The .bash_profile properties are loaded every time you log in.

The source command is useful if you don't want to log in again.

Gustavo Meira
  • 2,875
  • 3
  • 21
  • 33
fedorqui
  • 275,237
  • 103
  • 548
  • 598
  • could you explain how this is different from the export call? – njzk2 Jun 04 '13 at 08:36
  • @njzk2 `export` just sets the variable for your current session. This should also work but only until you log out. And `source`ing `.bashrc` of course makes no sense. – kirelagin Jun 04 '13 at 09:00
  • 1
    And, what is more important, you _have to use `export`_ when setting variables in `.bash_profile`. – kirelagin Jun 04 '13 at 09:01
  • There is a nice explanation in http://stackoverflow.com/q/415403/1983854 . I did not know it is necessary to `EXPORT` in bash_profile. I update my answer accordingly. – fedorqui Jun 04 '13 at 09:08
  • that's my point. If it doesn't work with a simple export, i don't see how adding it the bash_profile helps. unless the script spawns a new session – njzk2 Jun 04 '13 at 09:44
5

@fedorqui's answer above was almost good for me, but there is at least one mistake (I am not sure about the export statement in all caps, I am a complete newbie). There should not be a $ sign preceding PYTHONPATH in the export statement. So the options would be:

Create a .bash_profile in your home directory. Then, add the line

PYTHONPATH=$PYTHONPATH:new_dir
export PYTHONPATH

Or even better:

if [ -d "new_dir" ] ; then
  PYTHONPATH="$PYTHONPATH:new_dir"
fi
export PYTHONPATH