2010-05-08 9 views
2

Existe-t-il un moyen de rendre les fichiers sources py2exe .py au lieu des fichiers .pyc octets compilés dans la bibliothèque?Rendre py2exe produire des fichiers `.py`

+0

Vous avez déjà les fichiers .py - ils sont entrés dans py2exe. Puisque vous avez déjà des fichiers .py, qu'essayez-vous d'accomplir? –

+0

Au lieu d'avoir la sortie py2exe '.pyc' dans la bibliothèque, je veux qu'elle produise des fichiers' .py'. C'est ainsi qu'il sera plus facile pour moi de déboguer. –

+2

-1: Vous avez déjà des fichiers .py. Cela n'a aucun sens. Le commentaire n'aide pas. Essayez de mettre à jour la question avec une explication rationnelle de la raison pour laquelle vous voulez des fichiers .py * lorsque vous avez déjà les fichiers .py *. –

Répondre

1

Je l'ai fait il y a longtemps, je l'espère, je me souviens bien:

  • Set compressé sur False, donc py2exe ne crée pas un fichier de bibliothèque Zip'd.
  • Définir optimiser à zéro, alors py2exe va écrire pyc fichiers.

MISE À JOUR: Ram Rachum est juste, utilisez l'option skip_archive au lieu de compressed.

Vous ne serez pas en mesure de modifier votre fichier Python principal, car il sera intégré dans l'exécutable principal, alors gardez le minimum. Ensuite, vous pourrez remplacer les fichiers pyc avec vos fichiers py manuellement dans votre distribution au besoin. Aucune raison de remplacer les bibliothèques standard, cependant, seulement votre propre code.

(Il n'est pas optimale pour le débogage, mais je suppose que vous voulez résoudre un problème qui se passe uniquement dans la version release de votre logiciel de cette façon.)

S'il vous plaît laissez-moi savoir si cela ne fonctionne pas et je Je vais essayer d'aider.

MISE À JOUR:

Je viens de lire les parties pertinentes du code source py2exe. Il semble que py2exe ne le supporte pas hors de la boîte. Nous sommes donc partis avec l'option de toucher son code source.

Vous pouvez facilement modifier py2exe pour prendre en charge ce mode. Voir la fonction byte_compile dans build_exe.py. Il y a un appel à la fonction intégrée compile, que vous pouvez remplacer par un . Ne pas oublier de modifier le nom du fichier de destination (dfile) pour avoir l'extension .py au lieu de .pyc ou .pyo. Je sais que c'est un patchwork, mais je ne vois pas d'autre possibilité pour résoudre votre problème.

Vous pouvez également ajouter une nouvelle option py2exe ou introduire une nouvelle valeur optimize pour cela si vous êtes curieux. Ce serait une contribution open-source à py2exe, en fait. ;)

+0

Je suis déjà capable de les remplacer manuellement par des fichiers py. (En outre, je fais 'skip_archive' pour avoir un dossier au lieu d'un fichier zip.) J'aimerais juste que py2exe n'essaie pas d'être aussi intelligent; Je souhaite qu'il copiera simplement le contenu du paquet original pour chaque paquet dans la bibliothèque. En dehors de cela compiler le '.py' fichiers, il manque également des fichiers de données pour certains paquets scientifiques par exemple. –

+0

Vous pouvez lister les fichiers de données manqués par 'py2exe' explicitement dans l'option' data_files'. Voir aussi: http://py2exe.org/index.cgi/data_files – fviktor

+0

Veuillez consulter ma mise à jour ci-dessus. J'espère que ça aide. – fviktor