Comment installer Python 3.6?

108

Je voudrais installer le dernier Python, qui est de 3,6 à l'heure de ce post. Cependant, le référentiel dit que Python 3.4.2 est la version la plus récente.

J'ai essayé:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

Pour effectuer une mise à niveau vers Python 3.6 sur mon poste de travail Windows, j'ai simplement téléchargé un fichier exe, cliqué sur "suivant" à quelques reprises, et le tour est joué. Quelle est la procédure appropriée et officiellement acceptée pour installer Python 3.6 sur Debian Jessie?

dvtan
la source
6
Les référentiels Debian par défaut contiennent des packages logiciels spécialement compilés pour une certaine version de Debian. Hormis les mises à jour de sécurité (de préférence le moins de modifications nécessaires pour réparer une faille de sécurité), les nouvelles versions de la plupart des logiciels peuvent ne pas être disponibles avant la prochaine version majeure afin d'éviter toute instabilité potentielle.
phk
@phk Dans ce cas, ne serait-il pas prudent d'adopter un comportement similaire à pip, c'est-à-dire, passer par défaut à 3.4.2 lorsqu'une version n'est pas spécifiée, et autoriser l'utilisateur à demander explicitement la version 3.6 avec un indicateur? Juste une idée :)
dvtan
1
Cela voudrait dire que les gens de Debian devraient maintenir toutes ces versions de Python pour chaque version de Debian prise en charge. Bien sûr, cela pourrait être automatisé, mais ce serait quand même beaucoup. En outre, les utilisateurs expérimentés souhaitant disposer de versions plus récentes pourraient tout aussi bien utiliser des référentiels personnalisés. Parfois, les auteurs de logiciels eux-mêmes les gèrent pour Debian et d’autres distributions Linux populaires, par exemple dans le cas d’ Oracle VirtualBox .
phk
1
Python 3.6 (bien que rc1) vient d’arriver dans Debian expérimental. Il est probablement possible de le porter à Jessie, éventuellement avec un peu de peaufinage.
Faheem Mitha
Mise à jour. Pour moi, cette construction terminée avec succès sur l’écurie Debian (Jessie). Cependant, cela ne signifie pas qu'il installera correctement et ne posera pas de problèmes. Une prochaine étape raisonnable consisterait à le tester sur une machine virtuelle test de stable. Est-ce que quelqu'un s'en soucie?
Faheem Mitha

Réponses:

67

Note de la rédaction:
veuillez lire les commentaires de cette réponse.


Debian n’a pas Python 3.6 dans ses dépôts, mais le test l’a.

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

Vous avez demandé:

la procédure appropriée et officiellement acceptée

mais je dois préciser que ce n'est pas une solution officielle, car elle utilise des référentiels de test.

Егор Гвоздиков
la source
62
Attention: ceci va mettre à jour votre système vers un hybride de la version de Debian que vous utilisez actuellement (probablement 'stable') plus 'unstable' plus 'expérimental'. Ce sera bien pire que de simplement mettre à niveau en instable et en choisissant quelques paquets d’expérimental, ou (mieux encore, de rester stable et en cherchant des backports et / ou d’instable et / ou expérimental). Revenir sur ce point sera presque impossible. NON recommandé sauf si vous avez BEAUCOUP d'expérience avec les emballages Debian et Debian
cas
8
réponse modifiée pour définir la version par défaut d'apt sur stable. et a supprimé la 'apt-get upgrade' (qui met tout à niveau vers les dernières versions disponibles dans unstable ou expérimentale, à l'exception de tout ce qui pourrait entraîner la suppression d'un autre paquet). Cela devrait rendre cette procédure beaucoup moins dangereuse, mais pas toujours sûre. Et toujours pas recommandé pour les novices. Le terme «expérimental» n'est pas destiné à un usage occasionnel, mais à des contenus étranges, non testés, éventuellement cassés, susceptibles d'entrer en conflit ou de casser des choses, même en mode «instable». Il est également utilisé comme zone de transfert pour les grandes mises à niveau multi-packages.
cas
1
La réponse modifiée en tant que python 3.6.2 est (maintenant) dans le testingréférentiel, ce qui est plus sûr pour l'utilisateur moyen.
m4p85r
4
N'essayez pas cela - il vous faudra beaucoup de temps pour annuler
user3728501
2
Depuis le 15/09/2018, il est toujours risqué: j'ai essayé cela sur un Raspberry Pi avec Debian Stretch et je me suis heurté à des erreurs de segmentation après la mise à niveau de Python 3.6 à partir de tests, avec la mise à jour de libc6 et libc6-dev.
drott
154

Vous pouvez installer Python-3.6sur Debian 8 comme suit:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

Il est recommandé d'utiliser make altinstallselon le site officiel .

Si vous souhaitez pipêtre inclus, vous devez ajouter --with-ensurepip=installà votre appel à configurer. Pour plus de détails, voir ./configure --help.

Attention: make installpeut écraser ou masquer le binaire python. make altinstallest donc recommandé au lieu de make installpuisqu'il n'installe que exec_prefix/bin/pythonversion.

Certains packages doivent être installés pour éviter certains problèmes connus, voir: Problèmes de construction courants (mis à jour).

Ubuntu / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

Alternative de libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

Alternative de openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Mise à jour

Vous pouvez télécharger la dernière python-x.y.z.tar.gzd' ici .

Pour définir une version python par défaut et basculer facilement entre elles, vous devez mettre à jour votre update-alternativesversion python multiple.

Supposons que vous ayez installé l’ python3.7extension on debian, utilisez la commande whereis pythonpour localiser le fichier binaire ( */bin/python). par exemple:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

Ajoutez les versions de python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

Le python3.7avec la 50priorité est maintenant votre python par défaut, le python -Vsera imprimé:

Python 3.7.0b2

Pour basculer entre eux, utilisez:

update-alternatives --config python

Exemple de sortie:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 
GAD3R
la source
5
Les gars de Debian ne le recommandent-ils pas checkinstall? Sinon, il serait sage de l'installer sur /usr/localou /opt.
Ivan Anishchuk
3
Selon ./configure --helpPython 3.6 installe /usr/localpar défaut.
Markus Strauss
3
Vous rencontrez des problèmes avec cette réponse (par exemple, module SSL non disponible ou zlib manquant)? Voir: stackoverflow.com/a/41601137/972128
kkurian
11
Déni de responsabilité: cela prend plus de 20 heures sur un appareil de faible puissance comme le zéro Pi.
Antoine Lizée
2
Version 3.7est hors
Timo
32

La recommandation officielle est "vous n'avez pas réellement besoin d'un logiciel plus récent"

Ne souffrez pas du syndrome de Shuff New Stuff - DontBreakDebian | Wiki Debian

La plupart des conseils de cette page sont orientés sur la marche à suivre si vous souhaitez que le logiciel soit disponible dans tout le système, mais je ne pense pas que cela soit nécessaire dans ce cas.

Si vous extrayez les sources python, construisez l'interpréteur 3.6 --prefixen contrôlant où il se termine, puis utilisez virtualenvl' --pythonoption, vous pouvez utiliser python 3.6 sans rien affecter en dehors de votre projet.

Le processus pourrait ressembler à ceci:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

Si vous envisagez de le faire, vous voudrez peut-être prendre en compte l' --enable-optimizationsindicateur dans le configurescript Python , qui semble activer certaines fonctionnalités telles que l'optimisation guidée par le profil. Cela augmente les temps de construction mais semble se traduire par un interprète plus rapide d'environ 10% selon certains critères.

Gregory Nisbet
la source
5
Ceci suit la règle générale de Python selon laquelle "la praticité bat la pureté". J'ai tendance à installer des pythons à partir de paquets sources dans / opt / python-xyz, puis à exécuter des applications à partir de ses propres virtualenvs.
Zgoda
1
Remarque importante: si vous allez faire quelque chose comme ceci: assurez-vous que l'utilisateur, quel que soit votre processus Python, ne peut pas modifier le fichier virtualenv
Gregory Nisbet
1
A mon avis c'est la meilleure réponse.
BringBackCommodore64
Merci pour ce conseil. Dans le passé, j’avais cassé une installation Debian avec un addon pour tout le système.
gelé le
Dans mon installation [venv]$ which pythonne me donne pas /home/<user>/pythonroot/bin/python, mais /home/<user>/app/venv/bin/python3plutôt… pourquoi?
gelé le
12

Vous voudrez peut-être consulter pyenv: https://github.com/yyuu/pyenv . Pour citer le pyenvtutoriel d’Amaral Lab:

Pyenv, anciennement connu sous le nom de Pythonbrew, vous permet de modifier la version globale de Python, d'installer plusieurs versions de Python, des versions de Python spécifiques à un répertoire (projet) et de créer / gérer des environnements python virtuels ("virtualenvs"). Tout cela est fait sur des machines de style * NIX (Linux et OS X) sans dépendre de Python lui-même et cela fonctionne au niveau utilisateur - aucun besoin de commande sudo.

schaiba
la source
3
Bien que ce lien puisse répondre à la question, il est préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence. Les réponses avec lien uniquement peuvent devenir non valides si la page liée est modifiée. - De l'avis
Archemar
Vous avez raison, cela va changer la réponse.
schaiba
1
Je pense qu'il voulait aussi inclure les lignes de commande essentielles ...
not2qubit
Cela fonctionne bien, sauf lorsque vous utilisez des périphériques intégrés. Pour "installer" une version de python, la source est téléchargée et compilée localement. En dehors de cela, pyenv est un excellent choix et offre une grande flexibilité, notamment l’exécution de différentes versions de python dans différents répertoires et la résolution des problèmes très ennuyeux de PIP.
Brian Bulkowski
11

Ma méthode préférée consiste à utiliser Anaconda ou Miniconda pour conserver la dernière version de python et des paquets installés sur Debian.

Tout est soigneusement rangé dans un dossier, ce qui facilite grandement son retrait si vous le souhaitez. Le programme d’installation ajoute également le chemin à votre base (ajoutez-le vous-même si vous utilisez un autre shell).

Il vient avec pip, et aussi conda qui est un autre gestionnaire de paquets qui peut être bon pour des paquets plus complexes comme numpy. Miniconda est une installation simple, et Anaconda est une installation complète comprenant de nombreux packages, principalement conçus pour l'analyse de données.

Rapidement:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Lisez et acceptez la licence, si vous n'utilisez pas bash, ajoutez le chemin: export PATH="/home/$USER/miniconda3/bin:$PATH"

Tester:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

Installer depuis PyPi:

# pip install fava

Installer à partir de conda:

# conda install numpy

Lorsque vous voulez le supprimer, supprimez le dossier ~/miniconda3et le chemin dans votre base.

alexjj
la source
Après d’innombrables problèmes lors de l’installation de python à partir des sources, cette version a parfaitement fonctionné! Notez que si vous souhaitez utiliser virtualenv (wrapper) pour la gestion de l'environnement, vous devez ajouter le répertoire direcotry de la bibliothèque miniconda LD_LIBRARY_PATH. Ex: ajoutez export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"à votre .bashrc.
Juillet
"Le programme d'installation ajoute également le chemin d'accès à votre base" C'est la raison principale pour laquelle je n'utilise pas d' anaconda. Masquer silencieusement un environnement python existant n'est pas sain, c'est le moins que l'on puisse dire.
MisterMiyagi
3

Debian n’a pas Python 3.6 dans ses dépôts. Voici un aperçu du statut actuel de Python3:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

Vous pouvez les vérifier ici .

Vous pouvez installer 3.6 depuis les sources ou en utilisant quelque chose comme Linuxbrew pour l’installation d’un répertoire de base.

Dennis Chen
la source
3

Avec ça

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

Travailler avec succès.

Plus: définir python3.6 par défaut

sudo alias python=/usr/bin/python3.6

Maintenant :

python --version
Python 3.6
Sean S
la source
Devrait liresudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
déclinaison le
3
Cette réponse est la même que la réponse acceptée, est venue un an plus tard, mais ne parvient pas à donner les commandes correctes.
Vers SE
1

Python 3.6 (bien que rc1) vient d’arriver dans Debian expérimental. J'ai réussi à construire cela avec Debian stable (Jessie). Voir les dernières étapes de la construction collée ci-dessous.

Cependant, cela ne signifie pas qu'il installera correctement et ne posera pas de problèmes. Une prochaine étape raisonnable consisterait à le tester sur une machine virtuelle test de stable. Si quelqu'un s'en soucie, je pourrais essayer - ou quelqu'un d'autre pourrait essayer.

Une version correcte devrait arriver prochainement dans Debian unstable.

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.
Faheem Mitha
la source
0

Depuis septembre 2019, la dernière version stable de Debian (buster) dispose de python 3.7. La procédure appropriée et officiellement acceptée serait donc maintenant de passer à debian buster .

TamaMcGlinn
la source