web-dev-qa-db-fra.com

Comment modifier globalement le PYTHONPATH (sys.path) par défaut?

Sur un système Ubuntu (10.10), j'ai un paquet Python qui s'installe dans /usr/local/lib/python2.6/site-packages/. Ce n'est pas contenu dans le chemin par défaut (sys.path). Comment puis-je ajouter ce répertoire au chemin?

Définir la variable d'environnement $PYTHONPATH est une solution, bien sûr, mais je cherche un moyen plus élégant de le faire. Par exemple, easy_install y insère également les packages installés. Mon sys.path ressemble à ceci:

['', '/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']

le chemin n'est donc évidemment pas celui par défaut intégré au binaire Python.

Existe-t-il un seul fichier de configuration contenant les entrées ci-dessus? Ou de quelle manière est-il possible de le modifier?

32
Latanius

La documentation du module de site et modifiant le chemin de recherche de Python semble cherchez.

Autant que je sache, ces entrées sont ajoutées à sys.path par:

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (Modifiez la version 2.6 de votre version de Python.)

Le moyen le plus simple de le modifier consiste à ajouter un fichier /usr/local/lib/python2.6/dist-packages/site-packages.pth contenant ../site-packages.

Sinon, vous pouvez peut-être apprendre au paquet à utiliser site.getsitepackages()?

27
Mikel

Vous pouvez créer un nouveau fichier appelé /etc/profile.d/local_python.sh avec le contenu

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

Ce qui définira la variable PYTHONPATH pour tous les utilisateurs connectés sur votre système.

5
TestUser16418

J'aimerais résumer mes découvertes sur la modification du chemin de python. Il y a deux façons de le faire.

  • . pth fichier
  • PYTHONPATH

N'importe quel . Le fichier pth qui se trouve sur le chemin par défaut (voir ci-dessous) aura son contenu inclus dans sys.path. Le format du fichier . Pth est simple: un chemin (dossier) par ligne. Étonnamment, les chemins peuvent être absolus ou relatifs au fichier . Pth .

Le chemin par défaut est l'endroit où réside l'interprète et <some-prefix>/lib/python<version>/site-packages, où <some-prefix> est généralement /usr/.

PYTHONPATH est une variable environnementale de votre système d'exploitation. Sur les systèmes Unix, vous les répertoriez par env. La modification globale de ces variables se fait par le biais de . Sh scripts dans le dossier /etc/profile.d/, comme indiqué par @ TestUser16418.

4
katomaso

Par exemple, si vous souhaitez importer le module suds qui est disponible sous forme de fichier .Egg:

Egg_path = '/home/shahid/suds_2.4.Egg'

sys.path.append(Egg_path)

import suds
# ... rest of code