2012-05-06 1 views
29

Я знаю, как скомпилировать CPython-файл в exe с помощью cx_freeze, но можно ли скомпилировать простую программу с использованием PyPy для Exe?Compile PyPy to Exe

+1

Возможный дубликат http://stackoverflow.com/questions/4251964/can-pypy-be-used-to-produce-a-small-standalone-executable –

+1

Это не дубликат, потому что ссылка, которую вы предоставили, ничего не решает и устарел в 2010 году, сейчас у нас есть 2012 год. Возможно, с тех пор что-то изменилось. – Nuncjo

+7

@RolandSmith Этот вопрос конкретно задает вопрос о чем-то * в отличие от * py2exe и др., Поскольку он не включает интерпретатор Python и принял «Остановить запись Python и начать использовать этот совершенно другой язык, который является подмножеством Python» в качестве ответа , Этот вопрос просто запрашивает аналогичный инструмент замораживания, который работает с PyPy и полным Python. – delnan

ответ

-2

Это py2exe решение, которое может работать для вас: 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 делает * не * работает с PyPy (по крайней мере, в настоящее время) - сначала сделайте некоторое исследование. И почему вы ссылаетесь на сценарий настройки нечеткого проекта, а не на проект py2exe? – delnan

+1

@delnan: Поскольку py2exe не выводит один файл в качестве вывода, если вы не укажете ему параметры, связанные с ним. –

+1

@CeesTimmerman Конечно, этот параметр, наряду с другими, которые могут быть полезны OP, где-то документирован. – delnan

7

Там нет готовых так или учебник о том, как сделать создать EXE из программы с помощью интерпретатора PyPy, насколько я знаю. Я боюсь, что это не совсем тривиально.

В принципе, для перевода файлов PyPy можно использовать два способа, чтобы получить EXE-файл, используя либо интерпретатор PyPy, либо используя собственную программу RPython (интерпретатор PyPy сам по себе является программой RPython, то есть использует ограниченное подмножество Python).

Если вы используете ограниченное подмножество RPython и никаких зависимостей, вы можете изучить сценарий перевода в pypy/translator/goal, где вы также найдете много целевых * .py файлов. Возьмите его и измените его для своих целей. Вы можете первым хотите играть с переводом функции питона, начиная отсюда:

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

Если программа является приложением, и зависит от внешних пакетов, вы должны сначала попробовать, чтобы убедиться, что ваша программа работает на PyPy на всех - не все внешние библиотеки поддерживаются. Затем вы можете изучить модификацию скрипта targetpypystandalone для загрузки ваших модулей приложений. Если есть сомнения, попробуйте получить некоторую помощь в списке рассылки pypy-dev или канале #pypy на irc.freenode.net.

+0

Один недостаток RPython заключается в том, что он недокументирован, и если ваш код не будет следовать ему, переводчик потерпит неудачу с совершенно непонятными сообщениями об ошибках. (Например, попытка использования именованного кортежа дает ошибку. Объект FrozenDesc не имеет атрибута allenforced_attrs.) – Antimony

 Смежные вопросы

  • Нет связанных вопросов^_^