Não é assim que o PYTHONPATH funciona; PYTHONPATH trata seu caminho de pesquisa de maneira diferente do PATH do shell. Digamos que eu faça isso:
$ mkdir /home/jsmith/python
$ cd /home/jsmith/python
$ touch a.py b.py
Isso funcionará em Python ( sys.path
incluirá o diretório atual):
$ cd /
$ PYTHONPATH=/home/jsmith/python python2.6
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
>>> import a, b # Works
>>> quit()
No entanto, os subdiretórios são tratados como pacotes quando __init__.py
está presente no diretório e são ignorados por PYTHONPATH, caso contrário:
$ mkdir /home/jsmith/python/pkg
$ cd /home/jsmith/python/pkg
$ touch __init__.py c.py d.py
$ cd /
$ PYTHONPATH=/home/jsmith/python python2.6
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
>>> import a, b # Works
>>> import c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named c
Para chegar a algo nesse subdiretório, isso funcionaria:
>>> from pkg import c # Works
>>> import pkg.c # Works
Para rolar uma solução onde cada subdiretório no seu PYTHONPATH é adicionado, você precisa adicionar explicitamente cada pasta a PYTHONPATH ou sys.path
programaticamente. Esse comportamento é intencional e se comporta como nada como o PATH do shell. Dado o suporte do intérprete para pacotes a este respeito, certamente há uma maneira melhor de realizar o que você procura depois?