Можно ли скомпилировать Python изначально (помимо pyc-байтового кода)? - PullRequest
14 голосов
/ 15 октября 2008

Интересно, возможно ли создать исполняемый модуль из скрипта Python. Мне нужно иметь максимальную производительность и гибкость скрипта Python, без необходимости запуска в среде Python. Я использовал бы этот код для загрузки пользовательских модулей по требованию для настройки моего приложения.

Ответы [ 4 ]

14 голосов
/ 15 октября 2008
  • Существует pyrex , который компилирует Python-подобный источник в модули расширения Python
  • rpython , который позволяет компилировать python с некоторыми ограничениями для различных бэкэндов, таких как C, LLVM, .Net и т. Д.
  • Есть также shed-skin , который переводит python в C ++, но я не могу сказать, хорошо ли это.
  • PyPy реализует JIT-компилятор, который пытается оптимизировать время выполнения путем преобразования фрагментов того, что выполняется во время выполнения, в машинный код, если вы пишете для интерпретатора PyPy, который может быть возможным путем.
  • Тот же автор, который работает над JIT в PyPy, ранее писал psyco , который оптимизирует python в интерпретаторе CPython.
7 голосов
/ 15 октября 2008

Вы можете использовать что-то вроде py2exe для компиляции скрипта python в exe или Freeze для бинарного файла linux.

см .: Как я могу создать кросс-платформенное приложение с графическим интерфейсом, работающее напрямую, с использованием Python?

2 голосов
/ 17 октября 2008

Я добился большого успеха, используя Cython , который основан на Pyrex:

Cython - это язык, который делает написание расширений C для Python язык так же прост, как сам Python. Cython основан на известной Pyrex, но поддерживает больше режущей кромки функциональность и оптимизация.

Язык Cython очень близок к язык Python, но Cython дополнительно поддерживает вызов C функции и объявления типов C на переменные и атрибуты класса. это позволяет компилятору генерировать очень эффективный код C из кода Cython.

Это делает Cython идеальным языком для упаковки для внешних библиотек C, и для быстрых модулей C, которые ускоряют выполнение кода Python.

1 голос
/ 16 октября 2008

Я думаю, вы можете использовать jython для компиляции байт-кода Python в Java, а затем скомпилировать это с помощью GCJ.

...