web-dev-qa-db-fra.com

Mise à niveau vers python 2.7.5 sur Ubuntu 12.04

Ubuntu 12.04 est livré avec python v 2.7.3 par défaut. Je souhaite le mettre à niveau vers v 2.7.5. J'ai essayé les instructions données dans cette question ,

Sudo apt-get install build-essential
Sudo apt-get install libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

cd ~/Downloads/
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz

tar -xvf Python-2.7.5.tgz
cd Python-2.7.5

./configure
make
Sudo make altinstall

La dernière commande échoue avec l'erreur:

...
Compiling /usr/local/lib/python2.7/xmlrpclib.py ...
Compiling /usr/local/lib/python2.7/zipfile.py ...
make: *** [libinstall] Error 1

Comment puis-je effectuer cette mise à niveau?

9
Gabriel

L'installation à partir du source peut être faite, bien sûr, mais j'hésiterais à mettre à jour le paquet python de mon système Ubuntu à partir du source pour plusieurs raisons:

  1. Cela pourrait briser le système en faisant une compilation directe à partir des sources (je ne suis pas certain de la manière dont Ubuntu personnalise leurs versions de paquetage Python).

  2. Je serais inquiet qu'il pourrait y avoir des problèmes d'utilisation des modules à partir des référentiels.

Il y a un PPA qui semble actif (le train 2.7.x a été construit pour la dernière fois en avril de cette année), mais le PPA n'a pas encore de version 2.7.5. Vous voudrez peut-être envoyer une requête ping au responsable et voir quels sont ses plans pour les futures constructions et s’ils vont en inclure un pour la version 2.7.5. Si possible, je le recommanderais plutôt que de l’installer à partir des sources Comme pour tout nouveau logiciel, je recommanderais d’abord de le construire sur un système de test.

Une autre option consiste à utiliser un bac à sable (pyenv) pour exécuter tout nouveau package logiciel non testé. Une installation directe sur votre système pourrait avoir un impact négatif sur le fonctionnement de votre machine.

Le paquetage pyenv permettra à chacun d’installer une version non-système Python sur votre ordinateur sans impacter le paquet principal Python installé sur votre machine ( Le système dépend de la version actuellement installée de Python et sa mise à niveau pourrait endommager votre système). Auparavant, Pythonbrew était recommandé pour isoler les packages python du système, mais cette option a depuis été déconseillée et remplacée par le package pyenv.

Le package pyenv fournit les fonctionnalités suivantes:

  • Vous permet de modifier la version globale Python par utilisateur.
  • Prend en charge les versions par projet Python.
  • Vous permet de remplacer la version Python par une variable d'environnement.
  • Recherchez des commandes à partir de plusieurs versions de Python à la fois.

Installation

  1. Découvrez pyenv dans ~/.pyenv.

    git clone git://github.com/yyuu/pyenv.git .pyenv
    
  2. Ajoutez ~/.pyenv/bin à votre $ PATH pour accéder à l’utilitaire de ligne de commande pyenv.

    echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
    

    Remarque: modifiez votre fichier ~/.zshenv au lieu de ~/.bash_profile.

  3. Ajoutez pyenv init à votre shell pour activer les cales et la complétion automatique.

    echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
    

    Remarque: modifiez votre fichier ~/.zshenv au lieu de ~/.bash_profile.

  4. Redémarrez votre shell pour que les modifications de chemin prennent effet. Vous pouvez maintenant commencer à utiliser pyenv.

    exec $Shell
    
  5. Installez les versions Python dans ~/.pyenv/versions. Par exemple, pour installer Python 2.7.5, téléchargez et décompressez la source, puis exécutez:

    pyenv install 2.7.5
    

    REMARQUE Si vous devez transmettre les options de configuration pour générer à partir des sources, veuillez utiliser la variable d'environnement CONFIGURE_OPTS.

  6. Reconstruisez les binaires de shim. Vous devez le faire chaque fois que vous installez un nouveau binaire Python (par exemple, lors de l'installation d'une nouvelle version Python ou d'un package contenant un binaire).

    pyenv rehash
    
13
Kevin Bowen