2009-03-05 6 views
6

No tengo mucha experiencia con tcsh, pero estoy interesado en aprender. He estado teniendo problemas para que Python vea PYTHONPATH. Puedo repetir $ PYTHONPATH, y es correcto, pero cuando inicio Python, mis rutas de acceso no aparecen en sys.path. ¿Algunas ideas?Python en tcsh

EDIT:

[[email protected] ~]$ echo $PYTHONPATH 
/home/ba01/u116/dmcdonal/PyCogent-v1.1 

>>> from sys import path 
>>> from os import environ 
>>> path 
['', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/FiPy-2.0-py2.5.egg', '/apps/steele/Python-2.5.2', '/apps/steele/Python-2.5.2/lib/python25.zip', '/apps/steele/Python-2.5.2/lib/python2.5', '/apps/steele/Python-2.5.2/lib/python2.5/plat-linux2', '/apps/steele/Python-2.5.2/lib/python2.5/lib-tk', '/apps/steele/Python-2.5.2/lib/python2.5/lib-dynload', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/Numeric'] 
>>> environ['PYTHONPATH'] 
'/apps/steele/Python-2.5.2' 

Respuesta

10

¿Cómo se establece PYTHONPATH? Puede confundir el conjunto de tcsh vs. setenv. Use "set" para establecer qué tcsh llama a las variables de shell y use "setenv" para establecer las variables de entorno . Entonces, necesitas usar setenv para que Python pueda verlo. Por ejemplo:

$ set FOO='bar' 
$ echo $FOO 
bar 
$ python -c 'import os; print os.getenv("FOO")' 
None 

$ setenv BAR 'wiz' 
$ echo $BAR 
wiz 
$ python -c 'import os; print os.getenv("BAR")' 
wiz 

Hay más información disponible en the variables section of the tcsh documentation.

1

Asegúrese de que usted no está comenzando pitón con la opción -E (que es: ignorar las variables de entorno). Si inicias Python a través de un script de shell o alguna otra aplicación, simplemente comprueba que no agrega nada.

Dado que la lista de sys.path es larga, puede ser difícil perder sus rutas. PYTHONPATH normalmente se agrega a la mitad de la lista, después de todas las rutas de la biblioteca. ¿Alguna posibilidad de que tus caminos estén allí, simplemente enterrados en el medio?

+0

definitivamente no está en la lista y estoy llamando al binario directamente – daniel

+0

Hmmm ... ¿Funciona en cualquier otro shell? Si aparece en bash, etc., ¿funciona allí? ¿Qué versión de Python, por cierto? –

+0

funciona en bash bien. v2.5.2 – daniel

0

Comprobar:

  1. PYTHONPATH está en os.environ,
  2. y fijado al valor correcto de una de colon lista de rutas separó.

Si es así, y puede confirmar que sus rutas no están en sys.path, ha encontrado un error.

Si no está en os.environ, su entorno no está pasando por Python (probablemente otro error).

Por supuesto, muéstrenos el código real/exportaciones, y alguien le dirá con bastante rapidez.

0

que también tienen el mismo problema, incluso me puse ambiente PYTHONPATH correctamente en .cshrc cuando utilicé Python 2.5.1, cuando cambio el 2.6.2 a Python, que funciona bien. Parece que es un error de pitón.