[Tutor] Linux lib path

Chris Fuller cfuller at thinkingplanet.net
Sat Apr 10 10:53:22 CEST 2010


I'm using Debian.  Used to be etch, but I did a double dist-upgrade recently.  
So, whatever the current testing release is.  My shell is zsh, but bash should 
work the same.

PYTHONPATH should have worked.  CLASSPATH is for Java.


Here's the documentation link you want: 
http://docs.python.org/install/index.html#inst-search-path
http://docs.python.org/library/site.html


Files that end in ".pth" are read by Python and the contents are added to 
sys.path.


0 % python            
Python 2.5.5 (r255:77872, Feb  1 2010, 19:53:42) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> '/home/cfuller/tmp' in sys.path
False

0 % export PYTHONPATH=/home/cfuller/tmp
0 % python
Python 2.5.5 (r255:77872, Feb  1 2010, 19:53:42) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> '/home/cfuller/tmp' in sys.path
True


What I prefer to do, rather than mucking around with environment variables 
(which isn't reliable, say if its called from a daemon, init script, or maybe 
a non-interactive shell, and probably other esoterica) is to use .pth files.  
These are just a listing of directories for Python to add to sys.path.  A lot 
of packages include some of their own, you should find some in site-packges.  
Used to be you had to put them there to get them loaded, but there is new per-
user support in Python 2.6 and 3k: http://www.python.org/dev/peps/pep-0370/.

0 % export PYTHONPATH=                 
0 % python            
Python 2.5.5 (r255:77872, Feb  1 2010, 19:53:42) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> '/home/cfuller/tmp' in sys.path


0 % mkdir -p ~/.local/lib/python2.6/site-packages
0 % echo /home/cfuller/tmp > ~/.local/lib/python2.6/site-packages/tmp.pth
0 % python2.6
Python 2.6.5 (r265:79063, Mar 18 2010, 23:38:15) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> '/home/cfuller/tmp' in sys.path
True



Cheers


On Friday 09 April 2010, Joson wrote:
> Hi all,
> 
> How to append a path ("/var/myprog/src") to sys.path, but not in the
>  dynamic way like sys.path.apend(packpath), please?
> I use debian os. and I'd tried to set the classpath in /etc/profile (export
> CLASSPATH="..."), and the pythonpath too (export PYTHONPATH="..."). I found
> it didn't work.
> 
> Best regards,
> 
> Joson
> 



More information about the Tutor mailing list