2009-03-05 3 views
6

Je n'ai pas beaucoup d'expérience avec tcsh, mais je suis intéressé par l'apprentissage. J'ai eu des problèmes pour obtenir Python pour voir PYTHONPATH. Je peux echo $ PYTHONPATH, et c'est correct, mais quand je lance Python, mes chemins n'apparaissent pas dans sys.path. Des idées?Python dans 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' 

Répondre

10

Comment paramétrez-vous PYTHONPATH? Vous pourriez confondre l'ensemble de tcsh vs setenv. Utilisez "set" pour définir ce que tcsh appelle shell les variables et utilisez "setenv" pour définir variables d'environnement. Donc, vous devez utiliser setenv pour que Python puisse le voir. Par exemple:

$ 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 

Il y a un peu plus d'informations disponibles dans the variables section of the tcsh documentation.

1

Assurez-vous que vous n'êtes pas à partir python avec l'option -E (ce qui est: ne pas tenir compte des variables d'environnement). Si vous démarrez python via un script shell ou une autre application, il suffit de vérifier qu'elle n'ajoute rien.

Étant donné que la liste de sys.path est longue, il peut être difficile de rater vos chemins. PYTHONPATH est normalement ajouté à peu près au milieu de la liste, après tous les chemins de la bibliothèque. Y a-t-il une chance que tes chemins soient là, juste enterrés au milieu?

+0

certainement pas dans la liste et j'appelle le binaire directement – daniel

+0

Hmmm ... Est-ce qu'il fonctionne dans un autre shell? Si vous entrez dans bash, etc, ça marche là-bas? Quelle version de Python, btw? –

+0

fonctionne très bien. v2.5.2 – daniel

0

Vérifier:

  1. PYTHONPATH est en os.environ,
  2. et réglé sur la valeur correcte de deux points séparés liste de chemins.

Si tel est le cas, et que vous pouvez confirmer que vos chemins ne sont pas dans sys.path, vous avez trouvé un bug.

Si ce n'est pas dans os.environ, votre environnement ne passe pas à Python (probablement un autre bogue).

Bien sûr, montrez-nous le code/les exportations, et quelqu'un vous le dira assez rapidement.

0

J'ai aussi le même problème, même je mis environnement PYTHONPATH correctement dans .cshrc quand je Python 2.5.1, quand je passe le Python 2.6.2, il fonctionne très bien. On dirait que c'est un bug python.

Questions connexes