Подтвердить что ты не робот

Компиляция PyPy в Exe

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 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)