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

je veux créer une application GUI qui devrait fonctionner sur Windows et Mac. Pour cela, J'ai choisi Python.

le problème est sur Mac OS X.

il y a 2 outils pour générer un".app " pour Mac: py2app et pyinstaller.

  1. py2app est assez bon, mais il ajoute le code source dans le paquet. Je ne veulent pas partager le code avec les utilisateurs finaux.
  2. Pyinstaller génère un exécutable UNIX, alors comment l'exécuter sur Mac? Je créé un paquet avec cet exécutable, mais le résultat ".app" est pas de travail.

les questions sont:

  1. comment configurer py2app pour inclure le code source dans le exécutable, de sorte que les utilisateurs finaux n'auront pas accès à mon programme?
  2. comment convertir un exécutable UNIX en Mac".app" ?
  3. y a-t-il une comment compiler du code Python avec GCC ?
  4. sous Windows c'est facile, j'ai créé un fichier "exe" à partir du code Python et elle fonctionne. Est-il possible de créer un seul fichier "app" pour Mac ?

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

J'ai aussi vérifié ces sites:

  • http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html
  • http://www.pyinstaller.org/export/develop/project/doc/Manual.html?format=raw
  • http://www.pyinstaller.org/wiki/Features/MacOsCompatibility
  • http://www.stackoverflow.com/questions/2933/an-executable-python-app
31
demandé sur Chris 2011-08-31 22:39:33

11 réponses

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

à moins que vous ne hackiez très sérieusement l'interpréteur python (et incluiez la version mutilée), il n'y a pas vraiment de bonne façon de cacher la source à un utilisateur moyennement qualifié et déterminé. Je crois fermement que c'est vrai sur Windows également. En gros, que vous incluiez true source ou bytecode, un joli propre version de la source peut être récupéré. Plus important encore, à mon avis, à moins d'inclure le code source proprement dit (par opposition au bytecode, vous introduirez une dépendance possible sur la version de l'interpréteur).

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

Que voulez-vous dire par exécutable UNIX? Un binaire Darwin (OS X) [qui n'est pas en fait UNIX]? Qui peut être fait en utilisant les types d'outils vous déjà mentionné, mais il doit être fait avec soin pour éviter les dépendances de bibliothèque.

si tout ce que vous voulez c'est un simple wrapper pour mettre un binaire de ligne de commande dans une fenêtre, c'est assez facile à accomplir et la suite Xcode libre a plusieurs exemples qui serviraient (en fonction de ce que la sortie vous wan pour fournir, le cas échéant).

y a-t-il un moyen de compiler le code Python avec GCC ?

GCC ne compile pas Python. C'est un différents langages (bien qu'il existe des outils dans la famille gcc qui prennent en charge plusieurs langages front-end, mais pas Python). Il y a des outils qui tentent de traduire Python en C, et ensuite vous pouvez compiler cela en un vrai binaire, mais cela ne fonctionne que pour les programmes qui évitent certains types de construction, et le processus (et les restrictions) doivent appliquer vos bibliothèques aussi.

Un projet pour permettre cela est Cython. Il fonctionne bien pour certains types de code, principalement numérique code, mais il n'est pas trivial d'installer et exploiter, très particulièrement si vous voulez produire quelque chose qui fonctionne sur plusieurs des ordinateurs différents.

sous Windows c'est facile, j'ai créé un fichier "exe" à partir du code Python et il travail. 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 le cas OS X, l'exe a presque certainement la source code trivialement accessible à l'intérieur.

une astuce assez facile est de crypter le code source et ensuite le décrypter à la volée, mais ceci me semble que plus d'ennuis que cela vaut la peine.

8
répondu GregD 2015-12-12 18:33:39

PyInstaller créera automatiquement des paquets sous Mac OSX pour les exécutables fendus. En courant ypinstaller.py, assurez-vous de passer l'option "--fenêtré".

cette caractéristique est documentée dans le site Web de pyinstaller

6
répondu Dicky Tsang 2013-10-30 02:58:39

si vous n'êtes pas complètement engagé dans wxPython (et pour toute autre personne à la recherche d'un cadre GUI cross plate-forme Python), je vous recommande de consulter Kivy . C'est cross plate-forme, GPU accéléré, et il fera le app packaging pour vous. Il est facile de sauter dans, a une architecture bien pensée, et vous donne une incroyable quantité de flexibilité en termes d'interface. C'est le meilleur moyen que j'ai trouvé pour faire un python de plateforme croisée GUI app.

5
répondu Jonathan Potter 2015-12-19 15:54:14

cxFreeze était le choix. Je l'utilise pour emballer mon programme python dans une application Mac OS X. Qui fonctionne comme un charme.

3
répondu handsomegui 2013-05-21 16:15:19

2: Vous ne pouvez pas "le convertir", mais vous pouvez déplacer l'exécutable à App.app/Contents/MacOS/something dans A.app file, avec CFBundleExecutable défini à"something". Ce ne serait généralement pas recommandé.

1
répondu tkbx 2012-10-17 16:04:38

Automator a déjà été mentionné comme une solution rapide et simple pour les scripts Pythons qui sont contenus dans un seul fichier, mais comme L'interface utilisateur de L'Automateur a tellement d'options, et qu'il n'est pas évident de savoir comment le faire, je vais fournir des instructions étape par étape (vérifiées pour fonctionner sur Yosemite):

  1. dans Automator sélectionner File > New et sélectionner Application comme type de document.
  2. ensuite, assurez-vous que Actions onglet est sélectionné sur la gauche, puis dans la boîte de recherche de type run . Parmi d'autres options, vous verrez exécuter le script Shell - doubleclick it, et une fenêtre editor apparaîtra dans le panneau de droite.
  3. du Shell menu déroulant Sélectionner /usr/bin/python .
  4. coller votre code Python dans le éditer la fenêtre et puis choisir fichier > enregistrer .

par défaut, l'application sera sauvegardée sous $HOME/Applications et apparaîtra sous les projecteurs.

si vous voulez être en mesure de définir votre propre icône et avoir quelques fonctionnalités de fantaisie, comme les icônes de barre des tâches avec un menu, log windows, etc, puis jeter un oeil à Platypus , et open-source application pour la création macOS native bundle.

1
répondu ccpizza 2017-09-01 21:17:01

une personne motivée pourrait probablement reconstruire 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
répondu Russell Borogove 2011-08-31 19:14:55

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

0
répondu transilvlad 2012-09-18 09:55:50

ayant utilisé py2exe pour les utilisateurs de windows afin qu'ils n'aient pas à faire avec les versions de bibliothèques, j'ai déchiré les programmes compilés, ils incluent les fichiers bytecode de python. Alors que vous pouvez faire une violation de la licence de regarder à l'intérieur de ceux-ci, 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 rechercher 2c.py sur google), Je ne sais pas si L'un d'eux supporte GCC. Encore une fois, vous ne gagnez pas sécurité grâce à leur utilisation, mais vous pouvez obtenir une amélioration significative de la vitesse.

0
répondu Perkins 2012-09-29 02:10:20

Je ne l'ai pas essayé avec les grands projets Python, mais pour mes propres scripts, la façon la plus facile que j'ai trouvée était d'utiliser Automator

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

Automator peut également être piloté par AppleScript. Vous pouvez donc intégrer ce processus de conversion py-2-app à vos scripts de construction.

Je n'ai jamais testé un programme GUI avec elle donc je ne sais pas si vous serez heureux avec elle. Mais je l'essaierais car vous pouvez vous demander si tous les modules/applications python tiers cités sont bien maintenus, et combien de temps ils vont durer. Livré avec OS X, Automator va probablement rester, à moins que Apple s'en lasse vraiment.

0
répondu kakyo 2014-02-16 16:32:05

Je ne suis certainement pas un expert dans la distribution de python, mais parfois j'écris du code dont j'ai besoin pour le rendre utilisable par les utilisateurs non-python. La méthode que j'utilise est décrite ici sur mon blog:

http://www.nooganeer.com/his/tipsandtricks/distributing-python-application-osx /

0
répondu Jeff M. 2015-03-11 13:10:13