Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

requirements.txt et les install foireuses

+3 votes

Préliminaires de mon périple à 1h du mat histoire d'introduire le contexte de ma question :

En voulant me faire une partie de pythoria, j'ai cloné le dépôt :

https://github.com/dangillet/Pythoria

Ensuite, j'ai remarqué qu'il n'y avait pas de requirements.txt, donc je l'ai donc fait à la va-vite :

pygame==1.9
Pygcurse==0.10

Le hic est le suivant, sous les distros archlinux like, il se trouve que l'installation pygame est un peu chelou, car si on se contente de :

pip3 install pygame

Il ne trouve pas ! Il faut passer par :

yaourt -S python-pygame-hg

Par contre pygcurse cause pas trop de pb, un bon :

pip3 install pygcurse

et c'est plié !

Donc comment automatiser tout ce bordel avec un simple requirements.txt ?

Bon je me dis tant pis pour pygame, on va au moins se rabattre sur pygcurse, étant donné que j'ai réussi à l'installer je vérifie sa version :

pip3 freeze | grep pygcurse

Ne trouve rien, ah oui ces cons se sont amusés à mettre un 'P' majuscule !
Soit !

pip3 freeze | grep Pygcurse
Pygcurse==0.10.3

Maintenant on intègre tout ça dans requirements.txt

echo Pygcurse==0.10.3 > requirements.txt
cat requirements.txt 
Pygcurse==0.10.3

Essayons donc d'installer pygcurse via notre requirements.txt !!
Je commence par le désinstaller

sudo pip3 uninstall pygcurse
Mot de passe [sudo] de boblinux :
Uninstalling Pygcurse-0.10.3:
  /usr/lib/python3.5/site-packages/Pygcurse-0.10.3-py3.5.egg-info
  /usr/lib/python3.5/site-packages/pygcurse/__init__.py
  /usr/lib/python3.5/site-packages/pygcurse/__pycache__/__init__.cpython-35.pyc
  /usr/lib/python3.5/site-packages/pygcurse/__pycache__/ui.cpython-35.pyc
  /usr/lib/python3.5/site-packages/pygcurse/ui.py
Proceed (y/n)? y
  Successfully uninstalled Pygcurse-0.10.3

Cool ! Passons à l'installation via requirements :X

sudo pip3 install -r requirements.txt 
Collecting Pygcurse==0.10.3 (from -r requirements.txt (line 1))
  Using cached Pygcurse-0.10.3.zip
Installing collected packages: Pygcurse
  Running setup.py install for Pygcurse
Successfully installed Pygcurse-0.10.3

Bon, ok ça marche pour pygcurse.

du coup une solution pour y inclure pygame? sachant l'installation foireuse sous les archlinux like et qu'il faut passer par yaourt?

demandé 16-Jan-2016 par boblinux (3,092 points)
edité 20-Jan-2016 par boblinux

2 Réponses

+1 vote
 
Meilleure réponse

Je pense qu'il faut lire ta question :

du coup une solution pour y inclure pygame ? sachant l'installation foireuse sous les archlinux like et qu'il faut passer par yaourt?

Pas très étonnant que pip ne trouve pas pygame, vu qu'il ne se trouve pas dans le package index (pypi).

A ta place je passerai totalement par yaourt, je ne suis pas fan de l'usage de pip au niveau global sur une machine (installation de logiciels, toussa), ça cause parfois des problèmes.

Edit de @boblinux : la solution est vers virtualenv

répondu 17-Jan-2016 par yoch (2,506 points)
edité 17-Jan-2016 par boblinux

l'usage de pip au niveau global sur une machine

J'ai remarqué que l'usage de pip était quand même restreint =/, c'est vraiment dômmage qu'il faille tout inclure/installer à la main juste pour lancer un programme python, le packaging en python reste vraiment à désirer...
(là ou d'autres comme le java s'en sortent très bien ! il fournit un jar avec toutes les dépendances incluses, et il n'y a plus qu'à exécuter sans rien faire :o )

Donc l'utilisation de requirements.txt pour ce contexte est prohibé?

pas forcement si tu ponds un virtualenv tu touches à rien niveau install globale

@foxmask : c'est exactement ce que je veux dire, je préfère généralement utiliser pip de concert avec virtualenv.

+2 votes

Tu peux utiliser aussi conda, un utilitaire de package qui comble les défaults de pip pour distribuer du code qui n'est pas qu'en python (binaires, ...).
Il y a un dépôt officiel de paquet qui est géré par Anaconda, et ensuite chacun peut venir uploader ses paquets qui seron dans un channel avec son username.

Par exemple pour installer pygame je peux faire

conda install -c https://conda.anaconda.org/tlatorre pygame

L'avantage est que c'est indépendant des lib du systèmes, donc ton code fonctionnera de la même façon quelque soit la version de Linux/osx/windows que tu as.

conda à son propre système de virtualenv qui permet de dumper la liste de tous les paquets que tu as installé (de conda et de pip mélangés) et de tout te réinstaller d'un coup.

répondu 21-Jan-2016 par showok (212 points)
...