Question

Hé les gars, j'ai un problème de python de mise à niveau de 2,4 à 2,6:

Je CentOS 5 (Full)
Il a python 2.4 vivant dans /usr/lib/python2.4/
modules supplémentaires vivent dans /usr/lib/python2.4/site-packages /

Je l'ai construit Python 2.6 à partir de sources à /usr/local/lib/python2.6/
J'ai mis en python par défaut pour python2.6
Maintenant anciens modules de 2.4 sont hors de PYTHONPATH et sont « perdus »
En particulier, yum est cassé ( "aucun module nommé Yum")

Alors, quelle est la bonne façon de migrer / installer des modules à python2.6?

Était-ce utile?

La solution

Ils ne sont pas brisés, ils ne sont tout simplement pas installés. La solution est de les installer sous 2.6. Mais d'abord, nous devrions voir si vous devriez vraiment faire ...

Oui, Python lorsqu'il est installé remplacer la commande python à la version installée (sauf si vous exécutez avec --alt-installation). Vous ne dit pas exactement ce que votre problème est, donc je vais deviner. Votre problème est que de nombreuses commandes locales en utilisant Python échouent maintenant, parce qu'ils sont exécutés avec Python 2.6, et non avec Python 2.4. Est-ce exact?

Si tel est le cas, supprimez simplement / usr / local / bin / python, et assurez-vous / usr / bin / python est un lien symbolique vers /usr/bin/python2.4. Ensuite, vous devez taper python2.6 pour exécuter python2,6, mais c'est OK. C'est la meilleure façon de le faire. Ensuite, il vous suffit d'installer les packages dans le besoin 2.6.

Mais si je pense est faux, et vous avez vraiment besoin d'installer tous ces paquets sous 2.6, alors ne vous inquiétez pas trop. Tout d'abord, installez setuptools. Il comprend un script easy_install, et vous pouvez alors installer des modules avec

easy_install <modulename>

Il va télécharger le module à partir pypi.python.org et l'installer. Et il sera également installer un module qui est une dépendance. easy_install peut installer un module qui utilise distutils comme un installateur, et pas beaucoup ne le font pas. Cela fera l'installation de 90% de ces modules un jeu d'enfant.

Si le module a un composant C, il le compiler, et vous devez les en-têtes de bibliothèque aussi, et ce sera plus de travail, et tout ce que vous pouvez y faire est de les installer de façon standard CentOS.

Vous ne devriez pas utiliser des liens symboliques entre les versions, parce que les bibliothèques sont généralement pour une version particulière. Pour 2.4 et 2.6 Je pense que les fichiers .pyc sont compatibles (mais je ne suis pas sûr à 100%), de sorte que puisse fonctionner, mais tout module qui utilise C pause. Et d'autres versions de Python auront des fichiers incompatibles .pyc ainsi. Et je suis sûr que si vous faites cela, la plupart des gens Python ne vont pas vous aider si vous le faites. ; -)

En général, j'essaie garde aussi le python système « propre », i.e. Je n'installe rien là qui n'est pas installé avec les outils d'emballage. Au lieu de cela j'utilise virtualenv ou buildout de laisser toutes les applications ont leur propre chemin de python où il est dépendances en direct. Donc, chaque projet que je possède en fait son propre ensemble de bibliothèques. Il devient plus facile de cette façon.

Autres conseils

Il y a quelques options ...

  1. Si les modules fonctionneront sous Python 2.6, vous pouvez simplement créer des liens symboliques vers les à partir du répertoire 2.6 site-packages dans le répertoire 2.4 site-packages.

  2. Si elles ne fonctionnent pas sous 2.6, vous devrez peut-être les recompiler contre 2.6 ou installer des versions d'entre eux mises à jour. Assurez-vous que vous utilisez 2.6 lorsque vous appelez "python setup.py"

...

Vous pouvez poster ceci sur serverfault.com, si vous avez des défis supplémentaires.

Certains Python libs peuvent être toujours pas accessible avec Python 2.6 site-packages est changé à dist-packages.

La seule façon dans ce cas est de faire bouger les choses générées dans le site-packages (par exemple par make install) à dist-packages et de créer un sym-lien.

easy_install est bon, mais il y a moyen de bas niveau pour l'installation du module, il suffit:

  1. module source Déballez à un répertoire
  2. tapez "python setup.py install"

Bien sûr, vous devriez le faire avec la version interpréteur Python installé nécessaire; pour le vérifier le type:

python -V

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top