2012-05-06 36 views
29

W jaki sposób skompilować plik CPython do exe przy użyciu cx_freeze, ale czy można skompilować prosty program za pomocą PyPy do Exe?Kompilacja PyPy do Exe

+1

możliwy duplikat http://stackoverflow.com/questions/4251964/can-pypy-be-used-to-produce-a-small-standalone-executable –

+1

Nie jest to duplikat, ponieważ podany przez Ciebie link nie rozwiązuje problemu jest przestarzały 2010, teraz mamy 2012. Może coś się zmieniło od tego czasu. – Nuncjo

+7

@RolandSmith To pytanie prosi o coś * w przeciwieństwie do * py2exe i innych, ponieważ nie zawiera interpretera Pythona i zaakceptowało "Zatrzymaj pisanie Pythona i zacznij używać tego zupełnie innego języka, który jest podzbiorem Pythona" jako odpowiedź . To pytanie po prostu prosi o podobne narzędzie do zamrażania, które działa z PyPy i pełnym pythonem. – delnan

Odpowiedz

-2

Jest to rozwiązanie py2exe że może pracować dla Ciebie: 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 nie * nie * działa z PyPy (przynajmniej nie w tej chwili) - najpierw wykonaj kilka badań. I dlaczego linkujesz do jakiegoś mało znanego skryptu instalacyjnego projektu, a nie do projektu py2exe? – delnan

+1

@delnan: Ponieważ py2exe nie generuje pojedynczego pliku jako wyjścia, chyba że powiesz o tym przez opcje secumind połączone. –

+1

@CeesTimmerman Z pewnością ta opcja, wraz z innymi, które mogą być użyteczne dla OP, jest gdzieś udokumentowana. – delnan

7

Nie ma gotowe Tak czy tutorial jak zrobić utworzyć plik EXE z programu przy użyciu interpretera pypy miarę wiem. I nie wydaje mi się, żeby to było dość trywialne.

Zasadniczo istnieją dwa sposoby rozważenia wykorzystania tłumaczeń PyPy do pobrania pliku EXE, za pomocą interpretera PyPy lub napisania własnego programu RPython (interpreter PyPy sam jest programem RPython, tzn. Używa ograniczonego podzbioru Pyton).

Jeśli program korzysta z ograniczonego podzbioru RPython i nie ma zależności, można zajrzeć do skryptu translate w pypy/translator/goal, gdzie można również znaleźć wiele plików docelowych * .py. Weź jedną i zmodyfikuj ją do swoich celów. Może najpierw chce grać z funkcji python tłumaczenia począwszy od tutaj:

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

Jeśli program jest aplikacją i zależy na opakowaniach zewnętrznych, należy najpierw spróbować, aby upewnić się, że program działa na pypy w ogóle - nie wszystkie biblioteki zewnętrzne są obsługiwane. Możesz wtedy rozważyć modyfikację skryptu targetpypystandalone, aby załadować moduły aplikacji. W razie wątpliwości spróbuj uzyskać pomoc na liście mailingowej pypy-dev lub na kanale #pypy na irc.freenode.net.

+0

Jedną z wad RPython jest to, że jest to nieudokumentowane, a jeśli twój kod nie podąża za nim, tłumacz zawiedzie z całkowicie niezrozumiałymi komunikatami o błędach. (Na przykład próba użycia nazwanej krotki daje błąd, że obiekt FrozenDesc nie ma atrybutu allenforced_attrs.) – Antimony