Como modificar globalmente o padrão PYTHONPATH (sys.path)?

28

Em um sistema Ubuntu (10.10), eu tenho um pacote Python que se instala em /usr/local/lib/python2.6/site-packages/ . Isso não está contido no caminho padrão (sys.path). Como adiciono este diretório ao caminho?

Configurar a variável de ambiente $PYTHONPATH é uma solução, é claro, mas estou procurando uma maneira mais elegante de fazer isso. Por exemplo, easy_install também coloca pacotes instalados nele, meu sys.path é parecido com isto:

['', '/usr/local/lib/python2.6/dist-packages/keyring-0.5.1-py2.6.egg', 
'/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk',  
'/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', 
'/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6', 
'/usr/lib/pymodules/python2.6/gtk-2.0']

, então o caminho obviamente não é o padrão embutido no binário do Python.

Existe um único arquivo de configuração que contém as entradas acima? Ou de que maneiras é possível modificá-lo?

    
por Latanius 18.02.2011 / 21:23

4 respostas

26

A documentação do módulo do site e Modificando o caminho de pesquisa do Python parece ser o que você está procurando.

Tanto quanto eu entendo, essas entradas estão sendo adicionadas ao sys.path por:

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (Altere 2.6 para sua versão do Python.)

A maneira mais fácil de alterá-lo é adicionar um arquivo /usr/local/lib/python2.6/dist-packages/site-packages.pth contendo ../site-packages .

Alternativamente, talvez você possa ensinar o pacote a usar site.getsitepackages()

    
por 18.02.2011 / 22:17
5

Você pode criar um novo arquivo chamado /etc/profile.d/local_python.sh com o conteúdo

PYTHONPATH="/usr/local/lib/python2.6/site-packages/":"${PYTHONPATH}"
export PYTHONPATH

Que definirá a variável PYTHONPATH para todos os usuários conectados no seu sistema.

    
por 18.02.2011 / 21:55
4

Gostaria de resumir minhas descobertas sobre a modificação do caminho do python. Existem duas maneiras de fazer isso.

  • .pth arquivo
  • PYTHONPATH

Qualquer arquivo .pth encontrado no caminho padrão (veja abaixo) terá seu conteúdo incluído em sys.path . O formato do referido arquivo .pth é simples: um caminho (pasta) por linha. Surpreendentemente, os caminhos podem ser absolutos ou relativos ao arquivo .pth .

O caminho padrão é onde reside o intérprete e <some-prefix>/lib/python<version>/site-packages , em que <some-prefix> é geralmente /usr/ .

PYTHONPATH é variável ambiental do seu sistema operacional. Em sistemas unix você os lista por env . A modificação global de tais variáveis é feita através de scripts .sh dentro da pasta /etc/profile.d/ como mencionado por @ TestUser16418.

    
por 04.02.2017 / 15:54
1

Por exemplo, se você quiser importar o módulo suds que está disponível como um arquivo .egg :

egg_path = '/home/shahid/suds_2.4.egg'

sys.path.append(egg_path)

import suds
# ... rest of code
    
por 19.03.2013 / 11:56