web-dev-qa-db-fra.com

Comment créer une application Mac OS X avec Python?

Je souhaite créer une application graphique qui devrait fonctionner sous Windows et Mac. Pour cela, j'ai choisi Python.

Le problème est sur Mac OS X.

Il existe 2 outils pour générer un ".app" pour Mac: py2app et pyinstaller.

  1. py2app est très bon, mais il ajoute le code source dans le paquet. Je ne souhaite pas partager le code avec les utilisateurs finaux.
  2. Pyinstaller génère un exécutable UNIX, comment l’exécuter sur Mac? J'ai créé un ensemble avec cet exécutable, mais ".app" résultant ne fonctionne pas.

Les questions sont:

  1. Comment configurer py2app pour inclure le code source dans le fichier exécutable , Afin que les utilisateurs finaux n'aient pas accès à mon programme?
  2. Comment convertir un exécutable UNIX en Mac ".app"?
  3. Est-il possible de compiler le code Python avec GCC?
  4. Sous Windows, rien de plus simple, j’ai créé un fichier "exe" à partir de code Python etit fonctionne. Est-il possible de créer un seul fichier "app" pour Mac?

P.S. J'utilise deux ordinateurs (Windows et pour Mac), Python 2.7, wxPython, py2exe, py2app et pyinstaller.

Aussi, j'ai vérifié ces sites: 

31
Cristian Ciocău

Comment configurer py2app pour inclure le code source dans l'exécutable, afin que les utilisateurs finaux n'auront pas accès à mon programme?

Sauf si vous piratez très sérieusement l'interpréteur python (et incluez la version mutilée), il n'y a pas de très bon moyen de cacher la source à un utilisateur moyennement qualifié et déterminé. Je crois fermement que cela est également vrai sous Windows. Fondamentalement, que vous incluiez la source vraie ou le bytecode, une version assez propre de la source peut être récupérée. Plus important encore, à mon avis, à moins d’inclure le code source réel (contrairement au bytecode, vous introduisez une dépendance possible à la version de l’interpréteur). 

Comment convertir un exécutable UNIX en Mac ".app"?

Qu'entendez-vous par un exécutable UNIX? Un binaire Darwin (OS X) [qui n'est pas réellement UNIX]? Cela peut être fait en utilisant les types d’outils que vous avez déjà mentionnés, mais cela doit être fait avec précaution pour éviter les dépendances de la bibliothèque.

Si vous souhaitez simplement insérer un binaire en ligne de commande dans une fenêtre, il est assez facile à réaliser et la suite gratuite XCode propose plusieurs exemples qui pourraient servir (en fonction de la sortie). ).

Est-il possible de compiler le code Python avec GCC?

GCC ne compile pas Python. C’est un langage différent (bien que la famille gcc utilise des outils prenant en charge plusieurs interfaces de langage, mais pas Python). Il existe des outils qui tentent de traduire Python en C, et vous pouvez ensuite compiler cela en un véritable fichier binaire, mais cela ne fonctionne que pour les programmes qui évitent certains types de constructions, et le processus (et les restrictions) doivent également appliquer vos bibliothèques.
Un projet pour permettre cela est Cython. Cela fonctionne bien pour certains types de code, principalement du code numérique, mais il n’est pas simple d’installer et d’exploiter, surtout si vous voulez produire quelque chose qui fonctionne sur plusieurs ordinateurs différents.

Sous Windows, rien de plus simple, j’ai créé un fichier "exe" à partir de code Python et le travaux. Est-il possible de créer un seul fichier "app" pour Mac?

Je dois dire que je suis sceptique - très sceptique - à ce sujet. Tout comme dans le cas d’OS X, le fichier exe contient presque certainement le code source accessible de manière triviale.

Une astuce assez simple consiste à chiffrer le code source, puis à le déchiffrer à la volée, mais cela me semble être une source de problèmes non négligeable.

8
GregD

PyInstaller créera automatiquement des ensembles sous Mac OSX pour les exécutables fenêtrés. Lorsque vous exécutez ypinstaller.py, assurez-vous de passer l’option "--windowed".

Cette fonctionnalité est documentée sur le site Web de pyinstaller

6
Dicky Tsang

Si vous n'êtes pas complètement engagé dans wxPython (et pour tous ceux qui recherchent un framework d'interface graphique Python multi-plateformes), je vous recommande de consulter Kivy . C'est multi-plateforme, accéléré par le GPU, et cela fera le packaging de l'application pour vous. Il est facile d’y accéder, il a une architecture bien pensée et vous offre une flexibilité incroyable en termes d’interface. C'est la meilleure façon que j'ai trouvée de créer une application d'interface graphique Python multi-plateforme.

5
Jonathan Potter

cx_Freeze était le choix ..__ Je l'utilise pour compresser mon programme python dans une application Mac OS X. Ce qui fonctionne comme un charme.

4
handsomegui

Automator affiche un script de script en Python dans un fichier, sélectionnez le moment idéal pour imprimer une copie d'écran en un seul fichier, puis cliquez sur le bouton droit de la souris. come farlo realmente, à propos de Forniremo istruzioni dettagliate (verificato per funzionare su Yosemite):

  1. Dans Automator selezionareFile>Newe seleziona Applicazione come tipo di documento.
  2. Quindi, assicurarsi che la scheda Actions sia selezionata a sinistra, quindi nella casella di ricerca digitare run. Voir les autres images du script du script shell Esegui - Cliquez ici pour en savoir plus sur l'éditeur.
  3. Menu de menu a Shell selezionare /usr/bin/python .
  4. Incolore il tuo codice Python nella finestra di modifica e poi selezionaFile>Save.

Pour plus de détails, téléchargez l'application en $HOME/Applications and verrà visualizzata dans Spotlight.

Voir plus de détails sur les options d'achat et de livraison des cartes fantômes, cliquez ici pour afficher les options du menu, menu, menu, menu, menu, menu, carte Platypus - une application open source pour la création de médias natifs pour MacOS.

2
ccpizza

2: Vous ne pouvez pas le "convertir", mais vous pouvez déplacer l'exécutable vers App.app/Contents/MacOS/something dans un fichier .app, avec CFBundleExecutable défini sur "quelque chose". Cela ne serait généralement pas recommandé.

1
tkbx

cxFreeze est la meilleure solution disponible, commencez par créer votre programme ou votre application en utilisant python, puis créez le fichier setup pour votre application, puis construisez-la à l'aide de la commande de construction python setup.py build, en fonction de vos besoins changements.

0
Nilanj

Je n'ai pas essayé avec de gros projets Python, mais pour mes propres scripts, le moyen le plus simple que j'ai trouvé était d'utiliser Automator

Vous pouvez créer de manière interactive un projet d'application avec l'action Exécuter un script shell, puis coller votre script dans son éditeur, sélectionner votre programme shell (/ usr/bin/python), puis enregistrer le projet. Et vous avez vous-même une application native pour Mac.

Automator peut également être piloté par AppleScript. Vous pouvez ainsi canaliser ce processus de conversion py-2-app vers vos scripts de génération.

Je n'ai jamais testé un programme d'interface graphique avec ce dernier, donc je ne sais pas si vous en serez satisfait. Mais je voudrais essayer car vous vous demandez peut-être à quel point tous les modules/applications python tiers cités sont bien gérés, et combien de temps ils dureront. Livré avec OS X, Automator restera probablement, à moins qu'Apple ne soit VRAIMENT fatigué.

0
kakyo

Ayant utilisé py2exe pour les utilisateurs de Windows afin de ne pas avoir à traiter avec les versions de bibliothèque, j'ai déchiré les programmes compilés, ils incluent les fichiers de bytecode python. Bien que vous puissiez en faire une violation de la licence en regardant à l'intérieur, le fait est que si un ordinateur peut les exécuter, je peux les lire. Il est possible de compiler des programmes python avec gcc, via un préprocesseur C (essayez de chercher 2c.py sur Google), je ne sais pas si l’un d’entre eux supporte GCC. Encore une fois, vous ne gagnez pas en sécurité grâce à leur utilisation, mais vous pouvez obtenir une amélioration significative de la vitesse. 

0
Perkins

Le seul moyen est py2app. Vous avez pas d'autre moyen. Désolé .. Les recherches que vous avez faites semblent très solides et vous n'avez rien oublié.

0
transilvlad

Une personne motivée pourrait probablement reconstituer le code source utilisable à partir du bytecode Python dans votre application, de sorte que vous pourriez reconsidérer votre opposition à py2app. Si vous ne faites pas confiance à vos utilisateurs finaux, pourquoi faites-vous affaire avec eux?

0
Russell Borogove