26

I had python 2.7.3 and ipython 1.2 up and running correctly on my Linux system (ubuntu 12.04) but was trying to install an updated version of matplotlab needed for coursework.

After running this code line in the terminal

user$ sudo easy_install -U distribute
user$ export PYTHONHOME=/usr/lib/python2.7/

now every time I try and run python or ipython I get the error message

ImportError: no module named site

how do I reverse/fix this problem?? I'm so lost. I looked at other similar issues, but no one else used Linux and I'm not sure what to do.

maaartinus
  • 44,714
  • 32
  • 161
  • 320
geo_coder
  • 713
  • 3
  • 7
  • 17

3 Answers3

26

TRY to unset your python path...

In Linux/Mac, you can use these commands:

unset PYTHONPATH
unset PYTHONHOME
Marvin W
  • 3,423
  • 28
  • 16
18

PYTHONHOME

Change the location of the standard Python libraries. By default, the libraries are searched in prefix/lib/pythonversion and exec_prefix/lib/pythonversion, where prefix and exec_prefix are installation-dependent directories, both defaulting to /usr/local.

When PYTHONHOME is set to a single directory, its value replaces both prefix and exec_prefix. To specify different values for these, set PYTHONHOME to prefix:exec_prefix.

Try to clean up your PYTHONHOME:

user$ export PYTHONHOME=

As for installing matplotlib, I would recommend the following:

sudo apt-get install python-matplotlib

(details here)

E.Z.
  • 6,393
  • 11
  • 42
  • 69
  • yes! that worked, thank you so much! The matplotlib version accessed using apt-get install is not the latest version...I tried using sudo pip install --upgrade matplotlib but it's running a "Command python setup.py egg_info failed with error code 1". I may just leave that be and try and solve it tomorrow. – geo_coder Feb 19 '14 at 08:12
  • 2
    Hi, you're welcome. Please accept the answer if that worked for you, this will also removed your question from the list of unanswered questions. Cheers – E.Z. Feb 19 '14 at 09:51
  • 3
    export PYTHONHOME=/usr/ did it for me – bennos Sep 10 '14 at 08:47
10

you can unset PYTHONHOME to use the system default, or export PYTHONHOME=/usr to specify the prefix, to which Python will append '/lib/python2.7' (or whatever version it happens to be) to locate its libraries.

if you export PYTHONHOME=/usr/lib/python2.7, Python looks for libraries in the nonexistent folder /usr/lib/python2.7/lib/python2.7.

and if you export PYTHONHOME=, you are telling Python to look for lib in the current working directory:

jcomeau@aspire:~$ PYTHONHOME= strace -estat64 /usr/bin/python
stat64("lib/python2.7/", 0xff870ee0)    = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/", 0xff873efc)    = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/plat-i386-linux-gnu", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/plat-i386-linux-gnu", 0xff873efc) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/lib-tk", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/lib-tk", 0xff873efc) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/lib-old", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/lib-old", 0xff873efc) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/lib-dynload", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/lib-dynload", 0xff873efc) = -1 ENOENT (No such file or directory)
ImportError: No module named site
jcomeau_ictx
  • 37,688
  • 6
  • 92
  • 107