Installer git
$ sudo apt install git
Installer les dépendances de construction de Python
Python comprend un ensemble de modules qu'il construit en établissant des liens avec d'autres projets open source populaires. Beaucoup de ces projets sont inclus par défaut dans Debian en tant que programmes exécutables, mais les fichiers de développement (en-têtes, bibliothèques) nécessaires pour les lier à Python sont empaquetés séparément et ne sont pas inclus dans une installation Debian par défaut.
Certaines de ces bibliothèques sont en fait nécessaires pour que les étapes de construction/installation de Python se déroulent correctement :
| Library | Python Module | Dev Package |
| ---------------------------------- | ------------- | ------------ |
| https://www.zlib.net/ | `zlib` | `zlib1g-dev` |
| https://www.sourceware.org/libffi/ | `_ctypes` | `libffi-dev` |
Les entrées de la colonne "Dev Package" sont les noms des paquets contenant les fichiers de développement dont notre compilation Python a besoin.
Chacun de ces paquets 'dev' a un paquet binaire correspondant qui est probablement déjà installé. Il est donc peu probable que vous ajoutiez de nouveaux logiciels à votre système en les installant. Vous installez simplement les fichiers nécessaires à la compilation de nouveaux logiciels (dans notre cas, un Python plus récent) afin qu'ils puissent les utiliser. (Notez également que ces paquets "dev" ont tous leurs paquets binaires correspondants en tant que dépendances. dépendants, de sorte que l'installation d'un paquet "dev" garantit que son paquet binaire est également installé).
Alors, installons-les :
sudo apt install zlib1g-dev libffi-dev
Ensuite, nous avons la bibliothèque OpenSSL. Python considère OpenSSL comme facultative, mais vous la voulez probablement. Par exemple, même en utilisant l'installation du paquetage de Python peuvent rencontrer des problèmes lorsqu'ils vont chercher https
urls si le support SSL/TLS est absent.
| Library | Python Module | Dev Package |
| ------------------------ | ------------- | ----------- |
| https://www.openssl.org/ | `_ssl` | `libssl-dev |
Installons-le :
sudo apt install libssl-dev
La série de paquets suivante relève davantage de la catégorie "facultative" :
| Library | Python Module(s) | Dev Package |
| ---------------------------------------------------- | ----------------------------- | ------------------ |
| http://www.bzip.org/ | `_bz2` | `libbz2-dev` |
| https://www.gnu.org/software/ncurses/ | `_curses` and `_curses_panel` | `libncursesw5-dev` |
| https://www.gnu.org.ua/software/gdbm/ | `_dbm` and `_gdbm` | `libgdbm-dev` |
| https://tukaani.org/xz/ | `_lzma` | `liblzma-dev` |
| https://www.sqlite.org/ | `_sqlite3` | `libsqlite3-dev` |
| https://www.tcl.tk/software/tcltk/ | `_tkinter` | `tk-dev` |
| https://github.com/karelzak/util-linux | `_uuid` | `uuid-dev` |
| https://tiswww.case.edu/php/chet/readline/rltop.html | `readline` | `libreadline-dev` |
Python peut compiler et installer sans ces éléments, et vos applications n'en ont peut-être pas besoin. D'un autre côté, si vous les installez, l'étape 'make' ne devrait pas signaler les modules qu'elle n'a pas pu construire, et les binaires sont déjà inclus dans une installation Debian par défaut.
La commande à copier-coller si vous souhaitez installer tous les paquets "optionnels" ci-dessus est la suivante :
sudo apt install libbz2-dev libncursesw5-dev libgdbm-dev liblzma-dev libsqlite3-dev tk-dev uuid-dev libreadline-dev
Construire et installer Python à partir des sources
-
clonez le dépôt git de Python.
$ git clone git@github.com:python/cpython.git
Cloning into 'cpython'...
[...]
Resolving deltas: 100% (592215/592215), done.
-
Vérifiez la version que vous voulez installer (dans ce cas, 3.7.2) en utilisant le nom du tag git.
$ cd cpython/
cpython$ git checkout v3.7.2
Note: checking out 'v3.7.2'.
[...]
HEAD is now at 9a3ffc0492... 3.7.2final
cpython$
-
Choisissez un préfixe d'installation. C'est-à-dire, le chemin dans lequel le projet compilé et lié sera installé. Dans ce cas, je vais utiliser $HOME/python/v3.7.2
. J'inclus le numéro de version car je voudrais installer d'autres versions dans le futur, et les garder séparées. Exécutez le configure
script avec ce chemin comme le --prefix
argument. (Si vous ne fournissez pas d'argument --prefix, il prendra par défaut la valeur de /usr/local
).
cpython$ ./configure --prefix=$HOME/python/v3.7.2
[...]
checking for inflateCopy in -lz... yes
[...]
checking for openssl/ssl.h in /usr... yes
[...]
El configure
script va vérifier un tas de choses, dont beaucoup sont inutiles. Ceux qui sont montrés dans la sortie ci-dessus, cependant, peuvent être considérés comme nécessaires.
-
Construisez Python en exécutant make
. Si nous avons inclus l'ensemble minimal de dépendances nécessaires à la construction et à l'installation de Python, la sortie vous indiquera vers la fin quels modules n'ont pas été construits :
cpython$ make
[...]
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 _tkinter _uuid
readline
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
El make
décrit cela comme une liste de modules "optionnels" mais, une fois encore, du moins pour cette version particulière de Python, il ne pourra probablement pas être construit et installé avec succès sans le module zlib
y _ctypes
módulos.
-
Installez Python en exécutant make install
. Nous avons déjà fourni l'emplacement de l'installation dans le fichier configure
étape. Si votre emplacement d'installation est un répertoire appartenant à la racine (par ex. /usr/local
), préfixez cette commande par sudo
. Comme dans ce cas, j'installe dans un répertoire appartenant à un utilisateur, je ne veux pas faire cela.
cpython$ make install
Creating directory /home/python/v3.7.2/bin
Creating directory /home/python/v3.7.2/lib
[...]
-
Vous devriez maintenant avoir un exécutable que vous pouvez lancer à partir de l'interface de l'entreprise. bin
sous le préfixe d'installation nommé python3
. (Notez que cet installateur ne met rien à l'emplacement bin/python
; juste bin/python3
.)
$ $HOME/python/v3.7.2/bin/python3
Python 3.7.2 (v3.7.2:9a3ffc0492, Mar 10 2019, 19:35:56)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
quit()
$