web-dev-qa-db-fra.com

Configuration de Python pour utiliser des emplacements supplémentaires pour les sites-packages

Existe-t-il un moyen de dire Python à propos de site-packages emplacements sans modifier les scripts existants?

Sur mon serveur CentOS 5.5, j'ai une installation Python 2.7 qui est installée dans /opt/python2.7.2 et il y a site-packages dossier dans /opt/python2.7.2/lib/python2.7/site-packages.

La raison en est que je ne voulais pas déranger l'installation existante de Python 2.4 livrée avec la distribution 5.5.

Cependant, un tiers Python a également ajouté un site-packages dossier à: /usr/local/lib/python2.7/site-packages et s'est installé à cet emplacement.

C'est en partie de ma faute car je n'ai pas modifié le PREFIX dans le Makefile de l'application avant l'installation, mais je ne peux pas faire grand-chose maintenant.

Je sais que je peux faire ça:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages")

Cependant, cela impliquerait que je traque chaque script et que j'ajoute ce qui précède, ce qui n'est pas idéal s'il y a des mises à jour à l'avenir.

Pour contourner ce problème, j'ai créé un lien symbolique dans /opt/python2.7.2/lib/python2.7/site-packages à l'emplacement de cette application tierce:

 ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp

Cela semble bien fonctionner mais je me demande s'il y a une meilleure façon?

27
Kev

Vous pouvez utiliser le hook de configuration spécifique au site .

"Un fichier de configuration de chemin est un fichier dont le nom a la forme name.pth et existe dans l'un des quatre répertoires mentionnés ci-dessus; son contenu est constitué d'éléments supplémentaires (un par ligne) à ajouter à sys.path. "

Dans votre cas, vous devriez pouvoir réaliser ce que vous voulez en déposant simplement un .pth fichier contenant le chemin du répertoire à inclure:

[root@home]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth
42
Shawn Chin

Vous pouvez remplacer l'exécutable python par un script wrapper qui ajoute votre chemin d'installation ajouté à PYTHONPATH. Mais c'est un kludge.

Mais j'essaierais de corriger l'installation de l'add-on pour qu'il passe correctement dans le répertoire site-packages.

4
cfi