Можно ли скомпилировать Python изначально (за пределами байтового кода pyc)?

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

Ответы

Ответ 1

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

Ответ 3

У меня был большой успех, используя Cython, который основан на и расширяет pyrex:

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

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

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

Ответ 4

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