[Tutor] problem resulting from installing 3.0

Kent Johnson kent37 at tds.net
Sun Sep 2 14:40:53 CEST 2007


Dick Moores wrote:
> At 01:08 AM 9/1/2007, Alan Gauld wrote:
> 
>> "Dick Moores" <rdm at rcblue.com> wrote
>>
>> > > > And another question is, exactly what should go into PYTHONPATH?
>> >
>> > >Its what goes into sys.path.

PYTHONPATH is for your own customizations of sys.path, it is not the 
entirety of sys.path. AFAIK you don't have to define it at all if you 
don't want to use it.

If you have a dir containing modules that you want to be able to import 
directly, e.g.
mine/
   util.py
   foo.py

and in code you want to say
import util, foo

then put /path/to/mine/ in PYTHONPATH.

If you have a package - a dir of modules that go together, that you want 
to import as a package, e.g.
my-packages/
   mine/
     __init__.py
     util.py
     foo.py

then you import them as
from mine import util

you still put /path/to/mine/ in PYTHONPATH but now it is the dir 
containing the package rather than the dir containing the module.

__init__.py signals to Python that the containing dir should be treated 
as a package. It is independent of PYTHONPATH.


There are quite a few ways to get a module into the search path, 
modifying PYTHONPATH is just one way. Some others:
- create a site-packages/ dir in the Python lib dir. Put your modules 
and packages there and they will be found by Python.
- add a .pth file to site-packages/ that contains the path to the dir 
you want to add to sys.path
- modify sys.path directly in code. You can do this in a specific 
application or you can create site-packages/sitecustomize.py and do 
site-wide customizations there.

Kent




More information about the Tutor mailing list