Installation de CX-Freeze 32 bits

Le problème exposé dans ce sujet a été résolu.

Chers zesteux pythoniques,

J’ai un programme en python à partir duquel j’aimerais générer un .exe pour ceux qui n’ont pas python d’installé. Je viens de tout mettre à jour donc python 3.7.1 32 bits, pip 18, sous windows 10.

Pour ce faire j’ai prévu d’utiliser cx-freeze, mais j’ai un problème.

> pip install cx-freeze
Collecting cx-freeze
  Using cached https://files.pythonhosted.org/packages/5f/16/eab51d6571dfec2554248cb027c51babd04d97f594ab6359e0707361297d/cx_Freeze-5.1.1.tar.gz
Installing collected packages: cx-freeze
  Running setup.py install for cx-freeze: started
    Running setup.py install for cx-freeze: finished with status 'error'
...
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

Je ne veux pas MSVC ! Et de toute façon l’URL donnée dans le message atterrit sur une 404.

J’ai un python 3.6 (pas à jour donc) en 64 bits sur le même PC, qui lui a cx-freeze d’installé et fonctionnel. Je n’ai pas eu besoin de MSVC le jour où je l’ai installé.

Comment je fais pour générer des exécutables 32 bits ? Je ne souhaite pas continuer en 64 bits car il y a des utilisateurs qui sont encore en 32 bits (environ 40% d’après mes stats).

N’ais-je vraiment pas d’autre choix que d’installer une usine à gaz dont je ne me servirai jamais ?

Y a-t-il des alternatives à cx-freeze que je pourrais utiliser ? Les exigeances un peu spéciales que j’ai, c’est WXPython, et surtout la possibilité d’avoir des exécutables hybrides, c’est-à-dire que le code compilé dans le .exe doit pouvoir importer un .py extérieur, et que ce .py extérieur doit pouvoir importer des modules compilés dans le .exe (il y a un système de plugins). Cx-Freeze en était capable mais pas Py2Exe la dernière fois que je l’avais essayé.

Merci pour vos réponses

+0 -0

et pour info, tu ne pourras pas faire sans : il te faut un compilateur de C++ pour installer cx-freeze c’est ce qu’est "build-tools"

Comment tu expliques qu’en 64 bits on ne m’a rien demandé alors ? N’y a-t-il pas de précompilés en 32 bits ?

ET est-ce que je suis vraiment obligé d’installer l’IDE et tout le toutim ? A la rigueur si c’est juste le compilateur en ligne de commande, ça passera, mais l’IDE complet je n’en veux pas.

+0 -0

Si je me réfère à la page du PyPi qui va bien (https://pypi.org/project/cx_Freeze/#files) il n’y a pas de wheels pour Python 3.7, donc quelle que soit l’archi PIP devra le compiler à l’installation (donc tu auras besoin de MSVC).

Par contre il y en a pour Python 3.6 en 32 et 64 bits, ce qui simplifie les choses.

Reste à savoir si tu as absolument besoin de python 3.7 pour ce projet (ce serait surprenant), parce qu’en bossant en 3.6 tu te casserais sûrement moins la tête.

+2 -0

il n’y a pas de wheels pour Python 3.7, donc quelle que soit l’archi PIP devra le compiler à l’installation (donc tu auras besoin de MSVC).

Je suis complètement perdu dans leur installateur.

Le simple fait de cocher "Développement desktop en C++" m’indique 10 Go d’espace nécessaires. Ca me parait énorme. J’installe plus de 12 fois MinGW en 32 et 64 bits (que j’ai déjà) avec cette place.

ET je ne vois pas vraiment où je peux décocher une case pour ne pas inclure l’IDE mais uniquement le compilateur en ligne de commande.

Bref, j’abandonne l’installation de MSVC.

Par contre il y en a pour Python 3.6 en 32 et 64 bits, ce qui simplifie les choses.

Reste à savoir si tu as absolument besoin de python 3.7 pour ce projet (ce serait surprenant), parce qu’en bossant en 3.6 tu te casserais sûrement moins la tête.

Effectivement, je n’ai pas absolument besoin de python 3.7. Je pensais bien faire en me mettant à jour. Sauf erreur pour WXPython la 3.5 suffit.

Je sais ce qu’il me reste à faire…

Par contre, comment se fait-il que les binaires précompilés ne sont pas disponibles pour python 3.7 ? Est-ce que:

  • c’est juste une question de temps (les mainteneurs n’ont pas encore eu le temps de se mettre à jour / de recompiler pour python 3.7) ?
  • il y a une incompatibilité non résolue quelque part ?
  • c’est volontaire (on ne sait jamais) ?
  • OU bien cx-Freeze est abandonné et il faut trouver une autre solution ?

Merci.

+0 -0

Je pense que c’est pour la première raison : s’il n’y a pas eu de nouvelle version de cx_freeze depuis la sortie officielle de 3.7, alors ils n’ont pas encore eu besoin/l’occasion de générer les wheels.

Ça m’étonnerait que ce soit compatible avec 3.6 et pas avec 3.7 : il n’y a pas vraiment de gros changement entre ces deux versions de Python.

+0 -0

La documentation officielle de cx_freeze précise que Microsoft Visual C++ Redistributable Package est obligatoire sous Windows.
Qui plus est, les utilisateurs doivent aussi installer Microsoft Visual C++ Redistributable Package.

Python on Windows requires the Microsoft Visual C++ Redistributable Package. Python 2.6–3.2 uses the 2008 version, and because of how this is installed, cx_Freeze doesn’t automatically copy it for your application. It’s also not clear whether everyone has the right to redistribute the DLLs. You’re responsible for checking the license conditions associated with the DLLs you have installed.

If your license allows you to distribute these files, specify the include_msvcr option to build_exe to have them distributed automatically.

If not, your users or your installer will need to install the Microsoft Visual C++ Redistributable Package (a free download from Microsoft). It’s not uncommon for this to already be present on modern computers, but it’s not, as far as we know, part of a standard Windows installation. Note that the “SP1” version of this does not work – it has to exactly match the version which Python itself is compiled with.

+0 -0

La documentation officielle de cx_freeze précise que Microsoft Visual C++ Redistributable Package est obligatoire sous Windows. Qui plus est, les utilisateurs doivent aussi installer Microsoft Visual C++ Redistributable Package.

Le message initial demandait d’installer tout MSVC (le compilateur C++ en entier), pas seulement la MSVCRT.

ET pour l’obligation d’installer la MSVCRT chez l’utilisateur final, je ne me suis pas foulé, j’ai mis l’option pour qu’elle soit incluse dans le build. C’est un truc gratuit, et mon logiciel est open source, je ne vois pas pourquoi je n’aurais pas le droit de l’inclure d’office donc osef.

+0 -0

Le message initial demandait d’installer tout MSVC (le compilateur C++ en entier), pas seulement la MSVCRT.

C’est donc qu’il y a une erreur dans cette implémentation de cx_freeze.
De plus, le lien proposé est mort, ce qui constitue une seconde erreur.
Moi, je ne fais que citer la documentation, qui me semble plus correcte.

Voir cette discussion sur GITHUB.

C’est un truc gratuit, et mon logiciel est open source, je ne vois pas pourquoi je n’aurais pas le droit de l’inclure d’office donc osef.

Tu n’as probablement pas une A toi de vérifier si Microsoft t’accorde une licence pour diffuser cette DLL. Cette DLL est la propriété de Microsoft, elle n’est pas du tout Open Source à ma connaissance.
Il n’est pas nécessaire de l’inclure car quand on exécute le résultat de cx_freeze, la présence de MSVCRT est vérifiée. En cas d’absence, un message invitant à l’installer s’affiche. Du coup, cette histoire de licence ne te concerne plus, elle concerne l’utilisateur final.

Après, tu fais ce que tu veux …

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte