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?
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
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.