Salut, je vais essayer d'être le plus clair possible vu que c'est mon tout premier post.
Ma question est posée dans le cadre de mon stage où, suite au développement d'un projet python, je dois pouvoir le distribuer sous plusieures plateformes, à savoir Fedora, Ubuntu ainsi que Windows
Pour faire ceci j'ai utilisé setuptools (principalement un fichier setup.py et setup.cfg) ainsi que quelques scripts .sh assez simples capables d'installer mon produit sous un format rpm généré par la commande:
python3 setup.py bdist_rpm
Cela marche très bien lorsque je le distribue sur fedora ( ce qui semble assez normal fedora connait bien les .rpm) et sur ubuntu (ça marche également mais il faut passer par alien qui convertit les .rpm en .deb). Les scripts permettent seulement d'installer les modules python dont mon package a besoin comme SQLAlchemy, Coloredlogs etc. en utilisant pip
La création de la distribution .rpm de mon projet a été réalisé sous une fedora 23 avec python3.5.
Mon problème maintenant vient lorsque j'essaye de créer un installeur sous windows.
Je travaille sous un environnement windows 10 x86_64, et j'ai également python3.5 32bits et python3.5 64 bits d'installées.
Générer un .exe de mon projet en utilisat la commande : python3 setup.py bdist_wininst
me génère avec succès un .exe qu'on va appeller monprojet-1.0.0.win-amd64.exe.
Lorsque j'essaye de le mettre sur une autre machine ou même l'installer sur ma propre machine j'obtiens le message d'erreur suivant : " python version -32 is required, which was not found in the registry". Je rappelle que j'ai python3.5 32bits d'installé.
J'ai suivi ce problème sur stack overflow et j'ai pu tomber sur ce post Stack Overflow . Malheureusement ceci ne résout pas mon problème de registre.
Je me suis ensuite penché sur d'autres solutions comme par exemple : bdist_msi
qui lui fonctionne bien, il installe mon package sur un autre environnement windows mais n'installe ni les libraries dont a besoin mon projet ainsi que les modules python.
J'ai également essayé d'utiliser cx_freeze et pyinstaller , mais ils ne correspondent pas à ce que je souhaite. Je veux distribuer mon projet sous forme d'un install pas juste filer un .exe qui lancera mon projet.
Mon but sera de créer mon installeur sur ma machine hôté, le donner à une machine client sur laquelle elle installe mon projet ainsi que les dépendances dont elle a besoin (mariadb, lxml etc.) et les modules python nécessaires pour mon package (SQLAlchemy). Pour lancer mon projet sur la machine client , je vais créer une commande dans le PATH utilisateur tel que lorsqu'il tapera la commande monprojet cela sera un alias de
python /chemin_monprojet/monprojet.py
.
Ma question est, comment faire pour que mon bdistmsi installe également les dépendances dont j'ai besoin sur la machine client?
Ou comment faire marcher le bdistwininst avec ce problème de registre.
Mon dernier recours serait d'essayer la solution proposé sur ce site, mais j'aimerais bien utiliser setuptools pour créer une distribution de mon projet pour toutes les OS.