Python 2.x de multiples problèmes de version concernant PYTHONPATH
Il y a la version 2.6 de Python installée dans le système.
Maintenant, je veux utiliser les modules introduit dans Python 2.7. Car je n'ai pas les privilèges de root, j'ai construit & installé 2.7 sous mon répertoire$HOME/local/)
J'ai ajouté ce qui suit à mon $HOME/.bashrc:
export PATH=$HOME/local/bin:$PATH
export PYTHONPATH=$HOME/local/lib/python2.7:$PYTHONPATH
Maintenant, j'ai rencontré deux problèmes de je veux poser pour des solutions de contournement.
1. L'Invocation De Python 2.7
Nouvellement installé Python 2.7 ne trouve pas de 2,6 modules dans le système de la bibliothèque du chemin (/usr/lib/python2.6/site-packages/).
Dois-je l'ajouter à PYTHONPATH manuellement? Est-il plus agréable de solution?
2. Invoquant La Version 2.6 De Python
La version 2.6 de Python se plaint au démarrage:
'import site' failed; use -v for traceback
Je suppose que c'est en essayant de charger 2.7 modules (dans $HOME/local/lib/python2.7).
Est-il possible de charger seulement 2,6 modules Python 2.6 est invoquée?
Grâce.
OriginalL'auteur niboshi | 2012-03-04
Vous devez vous connecter pour publier un commentaire.
1), Invoquant python 2.7
En bref: à ne pas faire.
Il y a des raisons pourquoi le chemin est appelé '/usr/lib/python*2.6*/site-packages/'.
L'une des raisons est que, dans ce répertoire typiquement le "compilé" python fichiers (.pyc) sont stockés. la version 2.6 de python et python 2.7 .pyc fichiers ne sont pas compatibles:
python va sauter pyc les fichiers dont il ne peut pas comprendre, mais vous perdez au moins les avantages de fichiers précompilés.
Une autre raison est, que les choses pourraient se mélangent:
Je voudrais, dans votre cas, installer les modules nécessaires également pour python 2.7 dans la python2.7 répertoire.
2), Invoquant la version 2.6 de python
Vous pouvez avoir un coup d'oeil à la partie de la page de man où PYTHONHOME est décrit:
Vous pouvez stocker le python 2.7 fichiers spécifiques /modules dans le répertoire approprié dans votre installation locale. Ces fichiers /modules ne seront repris lorsque vous exécutez la version de python. Dans ce cas, vous ne devez pas définir le PYTHONPATH (ou PYTHONHOME).
Remarque: c'est exactement la façon de Debian (et peut-être d'autres distributions) gérer les différents simultanément installé les versions de python.
[Edit: Ajout de l'article 1 après avoir reçu un commentaire à partir du niboshi.]
OriginalL'auteur Andreas Florath
Au démarrage Python prend
PYTHONPATH
variable d'environnement et met ensys.path
variable.Lorsque vous essayez d'importer un module, regarde les chemins d'accès dans
sys.path
En raison de:
votre Python 2.7 chemins sont dans le début de
sys.path
, avant de les chemins de la version 2.6 de Python (Vous pouvezprint sys.path
à vérifier). Cela signifie que les modules de$HOME/local/lib/python2.7
aura une priorité.Pour personnaliser les chemins d'accès pour certains de vos scripts, vous pouvez soit définir
PYTHONPATH
par le script, ou modifiersys.path
(sys.path.insert(0, '/home/user/local/lib/python2.7')
droit dans votre script avant toute importation.Ou la copie d'un module spécifique pour votre projet sous un nom différent. Par exemple, j'ai copié
collections
module de Python 2.7 pour mon projet avec commecollections27.py
, et dans les endroits où j'ai besoin deOrderedDict
je nefrom collection27 import OrderedDict
Oui, je suppose. Juste s'assurer que seul la version 2.6 de Python modules sont dans le chemin d'accès - ne pas utiliser:
1. Vous pouvez, par exemple, copier collections.py (et d'autres modules dont vous avez besoin pour votre dossier de projet. Votre projet dir est recherché pour les modules de la première place, de sorte que lorsque vous ne
import collections
l'une à partir de votre dossier de projet seront importés. 2. Tweak PYTHONPATH. Si vous voulez libs à partir de la version 2.6 de Python ont la priorité par les chemins de première. Remarque: vérifiez que les chemins d'accès sont en effet l'impression sys.chemin dans votre script.OriginalL'auteur warvariuc
Puis-je suggérer pythonbrew comme une alternative plus facile.
Une fois que vous avez pythonbrew installé:
OriginalL'auteur Burhan Khalid