====== Python (et Debian) ======
Nous utilisons de plus en plus python dans le projet Khaganat, y compris sur les serveurs.
Je vais vous laisser expliquer pourquoi python c'est trop bien. Et pourquoi on choisit de privilégier ce langage (parce qu'il n'y a pas que lui qui est bien, dans l'absolu).
Cependant, l'utilisation de python peut être un peu déroutante pour des débutantes, d'autant que certaines choses changent d'un OS à l'autre et d'une distribution à l'autre.
TODO : lister vers les liens expliquant
* les bonnes pratiques python
* comment packager proprement python afin de l'utiliser partout
* comment faire fonctionner un programme python même si on n'a pas la bonne version
===== Quelques paquets pour démarrer =====
La version actuelle((16 juin 2018)) de python est la 3.6.5. Utiliser une version antérieure est dommage.
Pourtant certains systèmes, dont Debian, proposent par défaut python 2.7((cela est inhérent au "modèle" Debian : les versions stables de Debian n'intègrent aucune nouvelle version d'un logiciel, uniquement des mises à jour de sécurité)).
Il faut donc installer ''python3'', ainsi que ''pipenv'', qui permet d'installer et de gérer les paquets python avec la bonne version.
Sur Debian stable, pipenv n'est pas dans les paquets, il faut passer par pip.
sudo apt install python3 python3-pip python3-requests
sudo pip3 install pipenv
pipenv --three # Configure pipenv pour utiliser python 3 par défaut
==== En cas de souci avec pip3 ====
Certaines distributions/installations peuvent avoir du mal avec pip en commande simple. Dans ce cas les commandes suivantes peuvent aider à installer pipenv. Elles doivent être réalisées avec l'utisateur courant, pas avec sudo ou root !
python -m pip install pip --upgrade --user
python -m pip install pipenv --user
Avec Debian et python 2, il faudra remplacer la simple commande ''pipenv'' par ''python -m pipenv''. Pourquoi faire simple ?
Par contre, suivant votre version, ''pip3 install package'' peut très bien marcher. De même ''pipenv --three'' permet ensuite de se servir de pipenv directement (valable sous Stretch).
==== Utiliser pipenv ====
Cette partie demande à être relu et complétée par quelqu'un qui maitrise pipenv et de façon plus générale, les environnements virtuels en python.
Créez un dossier, allez dedans, et déclarez que ce dossier va aussi stocker l'environnement virtuel dans le dossier en question, au lieu de le mettre dans le dossier par défaut du système (''~/.local/share/virtualenvs/'', ça devient vite compliqué de s'y retrouver avec plusieurs projets)
mkdir dossier
cd dossier
PIPENV_VENV_IN_PROJECT=1
Puis installer ce que vous avez besoin
pipenv install django
Pour agir dans l'environnement virtuel, le plus simple est de passer dans un shell "pipenv"
pipenv shell
Toutes les commandes Unix habituelles sont disponibles, mais tout ce qui concerne python sera de la version et des paquets installés via ce pipenv ; cela permet d'avoir python2 qui tourne pour le système, et python 3 par défaut dans cet environnement virtuel.
Si on souhaite lancer uniquement une commande spécifique, on peut utiliser
pipenv run
Par exemple
pipenv run ./manage.py runserver
S'il y a besoin de virer "proprement" un environnement virtuel, il suffit de détruire le dossier de sa configuration, soit avec la commance ''pipenv --rm'' soit en allant chercher le dit dossier : ''rm -R ~/.local/share/virtualenvs/mon_environnement''.
Pour mettre à jour les paquets d'un environnement virtuel, il suffit simplement de faire :
pipenv update
===== Sources =====
* http://sametmax.com/pipenv-solution-moderne-pour-remplacer-pip-et-virtualenv/ : Sam et Max expliquent pourquoi pipenv c'est bien et comment l'installer sur Debian.
* https://pipenv.readthedocs.io/en/ : la documentation de pipenv
{{tag>Programmation Tutoriel Brouillon}}