2012-05-06 6 views
29

So come compilare il file CPython in exe utilizzando cx_freeze ma è possibile compilare un semplice programma usando PyPy in Exe?Compilare PyPy to Exe

+1

possibile duplicato di http://stackoverflow.com/questions/4251964/can-pypy-be-used-to-produce-a-small-standalone-executable –

+1

Non è un duplicato perché il collegamento fornito non risolve nulla e è obsoleto nel 2010, ora abbiamo 2012. Forse qualcosa è cambiato da quel momento. – Nuncjo

+7

@RolandSmith Quella domanda chiede specificamente qualcosa * a differenza di * py2exe et al, in quanto non include l'interprete Python e accetta "Interrompi la scrittura di Python e inizia a usare questo linguaggio completamente diverso che sembra essere un sottoinsieme di Python" come risposta . Questa domanda richiede semplicemente uno strumento di congelamento simile che funzioni con PyPy e Python completo. – delnan

risposta

-2

questa è una soluzione py2exe che potrebbe funzionare per voi: compile.py

#!/usr/bin/env python 
# Corey Goldberg 

from distutils.core import setup 
import py2exe 
import sys 

if len(sys.argv) == 2: 
    entry_point = sys.argv[1] 
    sys.argv.pop() 
    sys.argv.append('py2exe') 
    sys.argv.append('-q') 
else: 
    print 'usage: compile.py <python_script>\n' 
    raw_input('press ENTER to exit...') 
    sys.exit(1) 

opts = { 
    'py2exe': { 
     'compressed': 1, 
     'optimize': 2, 
     'bundle_files': 1 
    } 
} 

setup(console=[entry_point], options=opts, zipfile=None) 
+4

-1 py2exe fa * non * funziona con PyPy (almeno non al momento) - per favore fai qualche ricerca prima. E perché ti colleghi a qualche oscuro script di setup del progetto piuttosto che al progetto py2exe? – delnan

+1

@delnan: Perché py2exe non produce un singolo file come output a meno che non lo dici con le opzioni legate a secumind. –

+1

@CeesTimmerman Sicuramente questa opzione, insieme ad altre che potrebbero essere utili per OP, è documentata da qualche parte. – delnan

7

Non c'è modo ready-made o tutorial su come fare creare un file EXE da un programma utilizzando l'interprete PyPy, per quanto lo so. E non è esattamente banale far funzionare le cose, temo.

In linea di principio, ci sono due modi di prendere in considerazione per l'utilizzo di traduzioni di PyPy per ottenere un file EXE, sia utilizzando l'interprete PyPy o scrivendo il proprio programma RPython (L'interprete PyPy è di per sé un programma RPython, vale a dire utilizzando un sottoinsieme ristretto di Pitone).

Se il programma utilizza un sottoinsieme limitato di RPython e nessuna dipendenza, è possibile utilizzare lo script di traduzione in pypy/translator/goal dove si trovano anche molti file * .py di destinazione. Prendi uno e modificalo per i tuoi scopi. Si potrebbe prima vuole giocare con funzioni Python traduttive a partire da qui:

http://doc.pypy.org/en/latest/getting-started-dev.html#trying-out-the-translator

Se si programma è un'applicazione e dipende pacchetti esterni, si dovrebbe prima cercare di fare in modo che il programma funziona su PyPy a tutti - non tutte le librerie esterne sono supportate. Potresti quindi cercare di modificare lo script targetpypystandalone per caricare i moduli dell'applicazione. In caso di dubbi, cerca di ottenere aiuto sulla mailing list di pypy-dev o sul canale #pypy su irc.freenode.net.

+0

Uno svantaggio di RPython è che non è documentato, e se il tuo codice non lo segue, il traduttore fallirà con messaggi di errore completamente incomprensibili. (Ad esempio, provare ad usare una tupla con nome dà l'errore che l'oggetto FrozenDesc non ha attributi allenforce_attrs.) – Antimony