72 votes

Python 2.7 sur Ubuntu

Je suis novice en Python et je travaille sur une machine Linux (Ubuntu 10.10). Elle utilise Python 2.6, mais j'aimerais utiliser la version 2.7 car elle contient des fonctionnalités que je souhaite utiliser. On m'a conseillé de ne pas installer 2.7 et d'en faire mon python par défaut.

Ma question est la suivante : comment puis-je installer la version 2.7 et la faire fonctionner parallèlement à la version 2.6 ?

108voto

oylenshpeegul Points 3101

Je l'ai fait avec pythonbrew sur ma machine Ubuntu 10.10.

$ python -V
Python 2.6.6
$ curl -kL https://raw.github.com/utahta/pythonbrew/master/pythonbrew-install | bash
$ . $HOME/.pythonbrew/etc/bashrc
$ pythonbrew install 2.7.1
$ pythonbrew switch 2.7.1
Switched to Python-2.7.1
$ python -V
Python 2.7.1

Je l'ai également utilisé pour installer Python 3.2 .

10voto

Faheem Mitha Points 1589

J'ai récemment rétroporté Python 2.7 sur Debian Squeeze. Ubuntu 10.10 étant plus récent que Debian Squeeze, si vous pouvez le faire sur Squeeze, vous pouvez certainement le faire sur Ubuntu. Je n'ai pas accès à un système Ubuntu 10.10. Si j'en installe un, je le testerai et mettrai à jour cette réponse. Voici donc une brève esquisse de ce que j'ai fait sur Debian.

Tout d'abord, un commentaire général et évident, mais qui est facilement négligé. Il ne faut pas prendre trop au sérieux la liste des dépendances d'un paquet Debian. Elles peuvent être beaucoup plus spécifiques que nécessaire. Par exemple, un logiciel comme Python, qui est conçu pour être portable et fonctionner sur un large éventail de systèmes, n'est pas susceptible de dépendre de versions très spécifiques de logiciels. Les dépendances d'exécution peuvent également être ajustées, mais cela doit être fait avec plus de prudence. Cependant, les dépendances d'exécution sont le plus souvent générées dynamiquement sur la base des logiciels déjà présents sur le système, ce qui n'est généralement pas un problème majeur.

apt-cache policy python2.7
python2.7:
  Installed: 2.7.2-8
  Candidate: 2.7.2-8
  Version table:
     2.7.2-12 0
         50 http://debian.csail.mit.edu/debian/ unstable/main i386 Packages
     2.7.2-8 0
         50 http://debian.csail.mit.edu/debian/ testing/main i386 Packages
 *** 2.7.2-8 0
        100 /var/lib/dpkg/status

En sélectionnant la version de test, nous obtenons

apt-get source python2.7=2.7.2-8

Regarder debian/control nous voyons les lignes de dépendances suivantes.

Build-Depends : debhelper (>= 5), quilt, autoconf, libreadline-dev, libtinfo-dev, libncursesw5-dev (>= 5.3), tk8.5-dev, zlib1g-dev, blt-dev (>= 2.4z), libssl-dev, libexpat1-dev, sharutils, libbz2-dev, libbluetooth-dev [linux-any], locales [ ! armel !avr32 !hppa !ia64 !mipsel], libsqlite3-dev, libffi-dev (>= 3.0.5), mime-support, libgpm2 [linux-any], netbase, lsb-release, bzip2, libdb4.8-dev, gdb, python, help2man Build-Depends-Indep : python-sphinx Build-Conflicts : tcl8.3-dev, tk8.3-dev, tcl8.4-dev, tk8.4-dev, python2.7-xml, python-xml, autoconf2.13, libncurses5-dev

La plupart d'entre eux peuvent être facilement satisfaits grâce à Squeeze. Avec l'utilitaire pratique apt-show-versions nous obtenons sur ma machine

apt-show-versions debhelper quilt autoconf libreadline-dev libtinfo-dev libncursesw5-dev tk8.5-dev zlib1g-dev blt-dev \
libssl-dev libexpat1-dev sharutils libbz2-dev libbluetooth-dev locales libsqlite3-dev \
libffi-dev mime-support libgpm2 netbase lsb-release bzip2 libdb4.8-dev gdb python help2man python-sphinx

autoconf/squeeze uptodate 2.67-2
blt-dev/squeeze uptodate 2.4z-4.2
bzip2/squeeze uptodate 1.0.5-6
debhelper/squeeze-backports uptodate 8.9.13~bpo60+1
gdb/squeeze uptodate 7.0.1-2+b1
help2man/squeeze uptodate 1.38.2
libbluetooth-dev/squeeze uptodate 4.66-3
libbz2-dev/squeeze uptodate 1.0.5-6
libdb4.8-dev/squeeze uptodate 4.8.30-2
libexpat1-dev/squeeze uptodate 2.0.1-7
libffi-dev/squeeze uptodate 3.0.9-3
libgpm2/squeeze uptodate 1.20.4-3.3
libncursesw5-dev/squeeze uptodate 5.7+20100313-5
libreadline-dev/squeeze uptodate 6.1-3
libsqlite3-dev/squeeze uptodate 3.7.3-1
libssl-dev/squeeze uptodate 0.9.8o-4squeeze5
libtinfo-dev not installed
locales/squeeze uptodate 2.11.2-10
lsb-release/squeeze uptodate 3.2-23.2squeeze1
mime-support/squeeze uptodate 3.48-1
netbase/squeeze uptodate 4.45
python/squeeze uptodate 2.6.6-3+squeeze6
python-sphinx/squeeze-backports uptodate 1.0.8+dfsg-2~bpo60+1
quilt/squeeze uptodate 0.48-7
sharutils/squeeze uptodate 1:4.9-1
tk8.5-dev/squeeze uptodate 8.5.8-1
zlib1g-dev/squeeze uptodate 1:1.2.3.4.dfsg-3

Nous constatons que tout, sauf libtinfo-dev est disponible en format squeeze. J'ai les versions de squeeze backport de debhelper y python-sphinx mais tous deux sont également disponibles pour debian squeeze dans des versions satisfaisant aux exigences de construction.

Notez également que j'ai installé libncurses5-dev

apt-show-versions libncurses5-dev

libncurses5-dev/squeeze uptodate 5.7+20100313-5

Ces deux paquets correspondent au paquet source curses 5.7+20100313-5 . Observez que libtinfo-dev remplace en fait libncurses5-dev .

apt-cache show libtinfo-dev

Package: libtinfo-dev
Source: ncurses
Version: 5.9-4
Installed-Size: 279
Maintainer: Craig Small <csmall@debian.org>
Architecture: i386
Replaces: libncurses5-dev (<< 5.9-3)
Depends: libtinfo5 (= 5.9-4)

On ne s'attendrait pas à ce que python 2.7 se développe sur une version aussi spécifique de curses, et en fait ce n'est pas le cas. Cependant, si vous essayez de construire les paquets sans satisfaire la dépendance, vous obtenez

debuild -uc -us

dpkg-checkbuilddeps: Unmet build dependencies: libtinfo-dev
dpkg-checkbuilddeps: Build conflicts: libncurses5-dev
debuild: fatal error at line 1289:
You do not appear to have all build dependencies properly met.
You can use mk-build-deps to generate a dummy package which
Depends on all the required packages, or you can install them
manually using dpkg or apt using the error messages just above
this message.

Il est donc nécessaire d'éditer debian/control . Notez que vous devez également éditer de la même manière le fichier debian/control.in sinon le control sera incorrectement régénéré à partir du fichier control.in . La chose la plus simple à faire est de supprimer libncurses5-dev de la Build-Conflicts et libtinfo-dev del Build-Depends puis exécutez debuild -uc -us encore une fois. Si vous installez ce paquet en même temps que les paquets Python 2.6 par défaut sur Debian Squeeze, vous devez également supprimer les deux lignes qui suivent. devez également supprimer les deux lignes

Conflicts: python-profiler (<= 2.7.1-2)
Replaces: python-profiler (<= 2.7.1-2)

Ces lignes sont présentes parce que la version 2.7 inclut la fonction python-profiler fonctionnalité. Si 2.7 est le python par défaut, alors python-profiler n'est plus nécessaire. Cependant, si l'on installe la version 2.7 en tant que Python non par défaut, ce raisonnement ne s'applique pas, et la version 2.7 n'est pas nécessaire. s'applique pas, et python-profiler est encore nécessaire pour 2.6.

La compilation devrait s'effectuer avec succès et donner la liste suivante de paquets binaires.

ls -lah *.deb

-rw-r--r-- 1 faheem staff 289K Jan 12 02:33 idle-python2.7_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.1M Jan 12 02:34 libpython2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 2.5M Jan 12 02:34 python2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff  12M Jan 12 02:34 python2.7-dbg_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 4.9M Jan 12 02:34 python2.7-dev_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 6.0M Jan 12 02:33 python2.7-doc_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 692K Jan 12 02:33 python2.7-examples_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.7M Jan 12 02:34 python2.7-minimal_2.7.2-8_i386.deb

Enfin, on peut installer les paquets binaires avec

dpkg -i python2.7-minimal_2.7.2-8_i386.deb python2.7_2.7.2-8_i386.deb python2.7-dev_2.7.2-8_i386.deb libpython2.7_2.7.2-8_i386.deb 

Parfois dpkg peut être un peu difficile à satisfaire les dépendances lorsqu'elles sont toutes installées en même temps. apt-get -f install après si vous obtenez des erreurs de dépendance, ou bien installez les paquets par petits groupes.

5voto

Stefano Points 5188

Si la seule chose dont vous avez besoin est argparse (j'ai vu cela dans l'un de vos commentaires !), vous pouvez simplement faire :

pip install argparse

Ceci n'est pas exactement une réponse à la question exacte :-) mais en effet, s'il ne vous manque que quelques fonctionnalités, de nombreuses fonctionnalités de la 2.7 proviennent de projets indépendants et/ou des paquets de compatibilité peuvent être trouvés, par exemple :

La liste des 2.7 nouveautés est certes plus long, mais la plupart des autres nouveautés ne sont probablement pas un grand manque, et en échange vous n'avez pas à vous embêter avec de multiples installations de python sur votre boîte. Sinon, optez pour pythonbrew :-)

3voto

Rudy Points 451

Ubuntu 12.04

Installer les dépendances :

$ sudo apt-get install python-software-properties

Ajouter le repo :

$ sudo add-apt-repository ppa:fkrull/deadsnakes

Mise à jour de l'index du repo :

$ sudo apt-get update

Installer Python 3.3 :

$ sudo apt-get install python3.3

ubuntu 12.04 > plus

Installation des dépendances :

$ sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev

Téléchargez et compilez python :

$ wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2

$ tar jxf ./Python-3.3.0.tar.bz2

$ cd ./Python-3.3.0

$ ./configure --prefix=/opt/python3.3

$ make && sudo make install

Quelques touches sympathiques pour installer une commande py en créant un lien symbolique :

$ mkdir ~/bin
$ ln -s /opt/python3.3/bin/python ~/bin/py

1voto

Il suffit de télécharger Python 2.7 à partir de http://www.python.org/download/releases/2.7.1/ et le construire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X