Pergunta

Eu não tenho muita experiência com tcsh, mas eu estou interessado em aprender. Eu tenho tido problemas obtendo Python para ver PYTHONPATH. Posso echo $ PYTHONPATH, e é correto, mas quando eu iniciar o Python, os meus caminhos não aparecem em sys.path. Alguma idéia?

EDIT:

[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'
Foi útil?

Solução

Como você está definindo PYTHONPATH? Você pode estar confundindo conjunto vs. setenv do tcsh. Use "set" para definir o que chamadas tcsh variáveis ??do shell e use "setenv" para definir variáveis ??de ambiente . Então, você precisa usar setenv para que Python para vê-lo. Por exemplo:

$ 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

Há mais alguma informação disponível em seção variáveis ??da documentação tcsh .

Outras dicas

Certifique-se de que você não está começando python com a opção -E (que é: ignorar variáveis ??de ambiente). Se você começar python através de um script shell ou algum outro aplicativo, basta verifique que não acrescenta nada.

Uma vez que a lista de sys.path é longo, pode ser difícil de perder os seus caminhos. coisas PYTHONPATH normalmente é adicionado a cerca de meio da lista, depois de todos os caminhos de biblioteca. Qualquer chance de seus caminhos estão lá, apenas enterrado no meio?

Verifique:

  1. PYTHONPATH está em os.environ,
  2. e conjunto para o valor correcto de um cólon lista de caminhos separados.

Se for, e você pode confirmar que seus caminhos não estão no sys.path, você encontrou um bug.

Se não for em os.environ, o ambiente não é passagem para Python (provavelmente outro bug).

É claro que nos mostram as reais código / exportações, e alguém irá dizer-lhe muito rapidamente.

Eu também tenho o mesmo problema eu mesmo conjunto ambiente PYTHONPATH corretamente no .cshrc quando eu usei Python 2.5.1, quando eu mudar o que Python 2.6.2, ele funciona bem. Parece que ele é um bug python.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top