Pregunta
No tengo mucha experiencia con tcsh, pero estoy interesado en aprender. He tenido problemas para que Python vea PYTHONPATH. Puedo hacer eco de $ PYTHONPATH, y es correcto, pero cuando inicio Python, mis rutas no aparecen en sys.path. ¿Alguna idea?
EDITAR:
[dmcdonal@tg-steele ~]$ 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'
Solución
¿Cómo estás configurando PYTHONPATH? Podrías estar confundiendo el conjunto de tcsh contra el setenv. Utilice " establecer " para configurar lo que tcsh llama variables de shell y usar " setenv " para establecer variables de entorno . Por lo tanto, debe usar setenv para que Python lo vea. 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 la sección de variables de la documentación de tcsh .
Otros consejos
Asegúrese de que no está iniciando Python 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 agregue nada.
Dado que la lista de sys.path es larga, puede ser difícil perder sus rutas. Las cosas de PYTHONPATH normalmente se agregan a la mitad de la lista, después de todas las rutas de la biblioteca. ¿Alguna posibilidad de que tus caminos estén ahí, simplemente enterrados en el medio?
Comprobar:
- PYTHONPATH está en os.environ,
- y establezca el valor correcto de una lista de rutas separadas por dos puntos.
Si lo es, y puedes confirmar que tus rutas no están en sys.path, has encontrado un error.
Si no está en os.environ, su entorno no está pasando a Python (probablemente otro error).
Por supuesto, muéstranos el código real / exportaciones, y alguien te lo dirá rápidamente.
También tengo el mismo problema, incluso configuré el entorno PYTHONPATH
correctamente en .cshrc
cuando usé Python 2.5.1
, cuando cambio el a Python 2.6.2
, funciona bien. Parece que es un error de Python.