Ambiente: Debian 4.0PYTHONPATH ignorato
Python 2.4
mio 'progetto' è installato in:
/usr/lib/python2.4/site-packages/project.
Ma voglio usare la mia copia di lavoro al posto di quello installato che si trova in:
/home/me/dev/progetto/src
Quindi quello che faccio è:
export PYTHONPATH =/home/me/dev/progetto/src
ipython
import foo # che è in src
foo.__file__
*/usr/lib/python2.4/site-packages/project/foo.py*
invece di:
/home/me/dev/progetto/src/progetto/foo .py
Come mai? Cerco di controllare i sentieri (dopo aver fatto l'esportazione sopra) e quello che vedo è: sys
importazione, os
sys.path
[ '', '/ usr/bin ', ' /usr/lib/python2.4/site-packages ', '/home/me/dev/project/src ', ' /usr/lib/python24.zip ', '/usr/lib/python2.4 ', ' /usr/lib/python2.4/plat-linux2 ', ' /usr/lib/python2.4/lib-tk ', '/u sr/lib/python2.4/lib-dynload ', ' /usr/local/lib/python2.4/site-packages ', ' /usr/lib/python2.4/site-packages/PIL ', '/var/lib/python-support/python2.4', '/usr/lib/python2.4/site-packages/IPython/Extensions', '/home/me/.ipython']
os.environ [ 'PYTHONPATH']
/home/me/dev/progetto/src
macchina funziona correttamente: > export PYTHONPATH = foo > ipython > import sys > * sys.path = [ '/etc/python2.4', '/ home/me/foo ', ' /usr/lib/python24.zip ', ' /usr/lib/python2.4 ', ' /usr/lib/python2.4/plat-linux2 ', '/usr/lib/python2 .4/lib-tk ', ' /usr/lib/python2.4/lib-dynload ', ' /usr/local/lib/python2.4/site-packages ', '/usr/lib/python2 .4/site-packages ', '/var/lib/python-support/python2.4', ] * Nella macchina non funziona correttamente, */usr/lib/python2.4/site-packages * va prima nella lista ... –
Facciamo invece alcune domande precise: Tutti sono d'accordo sul fatto che se imposto il PYTHONPATH su un percorso di modulo valido, dovrebbe prima caricare questo modulo, indipendentemente? Tutti concordano sul fatto che Python prova a caricare i moduli seguendo l'ordine di sys.path? Se aboce è corretto, perché python non inserisce PYTHONPATH all'inizio di sys.path (dopo le uova)? –