Mise à niveau vers python 2.7.5 sur Ubuntu 12.04

9

Ubuntu 12.04 est fourni python v 2.7.3par défaut. Je veux le mettre à jour 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?

Gabriel
la source
3
Êtes-vous très sûr de devoir passer à la version 2.7.5? Toutes les corrections de bogues sont rétroportées vers 2.7.3 dans Ubuntu. Vous voulez vraiment vraiment vous éviter tous les maux de tête avec la compilation à partir des sources. Veuillez indiquer la raison spécifique de l'installation de 2.7.5. Sur ce site, les questions sur une installation Python cassée sont des affaires quotidiennes et il est très courant de voir qu'elle est causée par l'installation à partir de la source. Voir par exemple askubuntu.com/q/323248/88802
gertvdijk
1
J'utilisais un package dans le mauvais sens mais la question est toujours d'actualité et je ne comprends vraiment pas le downvote sans explication donnée.
Gabriel
Que se passe-t-il lorsque vous courez sudo make **install**au lieu de sudo make **altinstall**? Obtenez-vous la même erreur?
Kevin Bowen
Maintenant, j'ai peur d' essayer votre solution, car j'ai entendu tant de fois que cela briserait mon système. Je marquerai votre réponse comme acceptée car elle semble vraiment complète. Je vous remercie.
Gabriel
2
@Gabriel La solution de maggotbrain est très intéressante; il vous permet d'installer la version de votre choix dans un pyenv. Aucun mal n'est fait sur le Python de votre système. Je m'en souviendrai pour les questions futures. :)
gertvdijk

Réponses:

13

L'installation à partir de la source peut être effectuée, bien sûr, mais j'hésiterais à mettre à niveau le package python de mes systèmes Ubuntu à partir de la source pour plusieurs raisons:

  1. Cela pourrait briser le système en effectuant une compilation directe à partir des sources (je ne suis pas exactement certain de la façon dont Ubuntu personnalise leurs builds de paquet Python).

  2. Je craindrais qu'il puisse y avoir des problèmes avec l'utilisation des modules des référentiels à l'avenir.

Il existe 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 versions et s'il va en inclure un pour 2.7.5. Si possible, je recommanderais cela plutôt que d'installer à partir de la source. Comme pour tout nouveau logiciel, je recommanderais de le construire d'abord sur un système de test.

Une autre option consiste à utiliser un sandbox ( pyenv) pour exécuter tout nouveau progiciel non testé. Une installation directe sur votre système pourrait nuire au fonctionnement de votre machine.

Le package pyenv permettra d'installer une version Python non système sur votre box sans impact sur le package Python principal installé sur votre machine (Encore une fois: votre système dépend de la version actuellement installée de Python et sa mise à niveau pourrait casser votre système). Auparavant, Pythonbrew était recommandé pour isoler les packages python du système, mais cela a depuis été déconseillé et remplacé par le pyenvpackage.

Le pyenvpackage fournit les fonctionnalités suivantes:

  • Vous permet de modifier la version globale de Python par utilisateur.
  • Fournit un support pour les versions Python par projet.
  • Vous permet de remplacer la version Python par une variable d'environnement.
  • Rechercher 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 Zsh: modifiez votre ~/.zshenvfichier au lieu de ~/.bash_profile.

  3. Ajoutez pyenv init à votre shell pour activer les shims et l'auto-complétion.

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

    Remarque Zsh: modifiez votre ~/.zshenvfichier au lieu de ~/.bash_profile.

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

    exec $SHELL
  5. Installez les versions de 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 passer des options de configuration pour créer à partir de la source, 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 de Python, ou lors de l'installation d'un package qui fournit un binaire).

    pyenv rehash
Kevin Bowen
la source
1
pyenvest brillant pour tant de raisons. M'aide énormément dans mon expérimentation avec un minimum de tracas après la configuration initiale.
Fahad Yousuf
Est-ce que cela va être exécuté à partir du homedossier d'un utilisateur spécifique ? Comment puis-je l'installer pour chaque utilisateur? Puis - je installer ./pyenvdans /usr/local/binou est - ce une mauvaise idée?
biohazard