Domanda

Mi chiedo se sia possibile creare un modulo eseguibile da uno script Python. Ho bisogno di avere le massime prestazioni e la flessibilità dello script Python, senza dover eseguire l'ambiente Python. Vorrei utilizzare questo codice per caricare moduli utente su richiesta per personalizzare la mia applicazione.

È stato utile?

Soluzione

  • C'è pyrex che compila python come sorgente in moduli di estensione python
  • rpython che ti consente di compilare Python con alcune restrizioni per vari backend come C, LLVM, .Net ecc.
  • C'è anche shed-skin che traduce Python in C ++, ma non posso dire se sia buono .
  • PyPy implementa un compilatore JIT che tenta di ottimizzare il runtime di tradurre parti di ciò che è in esecuzione in fase di esecuzione in codice macchina, se si scrive per l'interprete PyPy che potrebbe essere un percorso fattibile.
  • Lo stesso autore che sta lavorando su JIT in PyPy ha scritto psyco che precedentemente ottimizza il pitone nell'interprete CPython .

Altri suggerimenti

Puoi usare qualcosa come py2exe per compilare il tuo script Python in un exe o Freeze per un binario di Linux.

vedi: Come posso creare un'app GUI multipiattaforma direttamente eseguibile utilizzando Python?

Ho avuto molto successo usando Cython , che si basa e estende pyrex:

  

Cython è un linguaggio che rende   scrivere estensioni C per Python   linguaggio facile come Python stesso.   Cython si basa sul noto   Pyrex, ma supporta più taglienti   funzionalità e ottimizzazioni.

     

Il linguaggio Cython è molto vicino   il linguaggio Python, ma Cython   supporta inoltre la chiamata C   funzioni e dichiarazione di tipi C attivati   variabili e attributi di classe. Questo   consente al compilatore di generare molto   codice C efficiente dal codice Cython.

     

Questo rende Cython il linguaggio ideale   per il wrapping per librerie C esterne,   e per moduli C veloci che accelerano   l'esecuzione del codice Python.

Penso che puoi usare jython per compilare python in bytecode Java, e poi compilarlo con GCJ.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top