J'ai une application Tkinter écrite en python, et je veux en faire des exécutables mac et windows "natifs" (faciles à exécuter). J'ai réussi à construire un fichier .exe avec py2exe, mais le processus équivalent avec py2app ne fonctionne pas.Aider à construire une application mac à partir de python en utilisant py2app?
Voici mon setup.py:
from setuptools import setup
import sys
MAIN_SCRIPT = "myapp.py"
WINDOWS_ICON = "myicon.ico"
MAC_ICON = "myicon.icns"
if sys.platform in ("win32", "win64"): # does win64 exist?
import py2exe
setup(windows=[{ "script":MAIN_SCRIPT,
"icon_resources":[(0x0004, WINDOWS_ICON)]
}],
)
elif sys.platform == "darwin":
import py2app
setup(app=[MAIN_SCRIPT], # doesn't include the icon yet
setup_requires=["py2app"],
)
Je viens cd
à mon répertoire d'applications et exécuter python setup.py py2app
. Le .app apparaît sans erreur, mais il se bloque au lancement avec "myapp a rencontré une erreur fatale, et va maintenant se terminer." Je cours Snow Leopard, et j'ai essayé ceci avec le Apple Python 2.6 standard et le python25 de MacPorts. J'ai lu quelque part qu'il est préférable d'utiliser un autre Python car py2app ne regroupera pas la version du système dans votre application.
EDIT: Voici ce que la console mac a à dire à ce sujet:
11/27/10 1:54:44 PM [0x0-0x80080].org.pythonmac.unspecified.myapp[77495] dlsym(0x10b120, Py_SetProgramName): symbol not found
11/27/10 1:54:46 PM [0x0-0x80080].org.pythonmac.unspecified.myapp[77495] 0x99274242
11/27/10 1:54:46 PM com.apple.launchd.peruser.501[185] ([0x0-0x80080].org.pythonmac.unspecified.myapp[77495]) Exited with exit code: 255
FYI: win64 n'existe pas. Voir http://docs.python.org/release/3.0.1/library/sys.html#sys.platform. De plus, n'y a-t-il pas un drapeau de log/debug d'application quelque part dans py2app? Ce serait très utile pour déboguer le problème. Je soupçonne que c'est une erreur d'importation quelque part. – sdolan
J'ai mis à jour la question avec la sortie de la console. py2app lui-même passe en mode débogage avec [pdb] (http://docs.python.org/library/pdb.html) s'il le faut, mais il se termine correctement. Je me demande si je peux ajouter pdb à l'application en cours d'exécution? – Jeff