2010-11-11 13 views
21

Così ho uno script Python:Posso in qualche modo "compilare" uno script Python per funzionare su PC senza Python installato?

myscript.py 

sto eseguendo in questo modo:

python D:\myscript.py 

Tuttavia, devo avere Python installato e inclusa nella variabile PATH ambiente per questo al lavoro.

È in qualche modo possibile "raggruppare" l'eseguibile Python con uno script Python in modo che altre persone siano in grado di eseguirlo sul proprio PC senza Python?

Va bene se funzionerà solo in Windows.

EDIT:

Dopo aver provato la compile.py ottengo questo errore:

Traceback (most recent call last): 
    File "D:\stuff\compile.py", line 4, in <module> 
    import py2exe 
ImportError: No module named py2exe 
+0

Per risolvere l'errore di importazione è necessario ottenere la versione corretta di 'py2exe' (32 o 64 bit in base alla configurazione di Python), installarlo e inoltre verificare che la cartella in cui è installata sia inclusa in' sys.path ' – Unode

risposta

17

Ecco un modo per farlo (per Windows, utilizzando py2exe).

Innanzitutto, installare py2exe nella casella di Windows.

Quindi creare uno script python di nome compile.py, in questo modo:

import sys 
from distutils.core import setup 
import py2exe 

entry_point = sys.argv[1] 
sys.argv.pop() 
sys.argv.append('py2exe') 
sys.argv.append('-q') 

opts = { 
    'py2exe': { 
     'compressed': 1, 
     'optimize': 2, 
     'bundle_files': 1 
    } 
} 

setup(console=[entry_point], options=opts, zipfile=None) 

Per compilare lo script Python in un eseguibile Windows, eseguire questo script con il vostro programma come argomento:

$ python compile.py myscript.py 

E ' sputerà un eseguibile binario (EXE) con un interprete Python compilato all'interno. È quindi possibile semplicemente distribuire questo file eseguibile.

+0

Grazie. Tuttavia sto ricevendo un errore. Controlla la mia risposta aggiornata. –

+0

hai installato py2exe? –

+0

Sì. Ho scaricato e installato py2exe-0.6.9.win64-py2.5.amd64 da Sourceforge. –

5

Here è un elenco di essi.

11

PyInstaller ha funzionato bene per me, generando pacchetti ragionevolmente piccoli grazie al suo uso di upx. Al tempo stesso, il rilevamento delle dipendenze era migliore di py2exe. Sembra non avere molti sviluppi recenti e probabilmente non funziona con 3.x, comunque.

L'origine nel repository è un punto di partenza migliore rispetto al pacchetto 1.4.

Vedere anche la pagina wiki su come lavorare con Python 2.6+.

Dall'elenco caratteristiche:

  • Imballaggio dei programmi Python in eseguibili standard, che di lavoro sul computer, senza Python installato.
  • Multipiattaforma: funziona in ambiente Windows (32 e 64 bit), Linux (32 bit e 64 bit) e Mac OS X (solo per 32 bit per ora, vedere MacOsCompatibility).
  • Multiversion: funziona con qualsiasi versione di Python da 1.5 a 2.7. NOTA: Se stai usando Python 2.6+ su Windows, vedi Python26Win.
  • Modalità di imballaggio flessibile:
  • Directory singola: crea una directory contenente un eseguibile più tutti i moduli binari esterni (.dll, .pyd, .so) utilizzati dal programma.
  • Singolo file: crea un singolo file eseguibile, totalmente autonomo, che funziona senza alcuna dipendenza esterna.
  • Personalizzato: è possibile automatizzare PyInstaller per eseguire qualsiasi modalità di pacchettizzazione tramite un semplice file di script in Python.
  • Supporto esplicito intelligente per molti pacchetti di terze parti (per importazioni nascoste, file di dati esterni, ecc.), Per farli funzionare immediatamente con PyInstaller (vedere SupportedPackages).
  • Supporto EGG completo a file singolo: i file .egg richiesti vengono controllati automaticamente per le dipendenze e raggruppati, e tutte le funzionalità specifiche per le uova sono supportate anche in fase di runtime (punti di ingresso, ecc.).
  • Supporto per directory EGG parziale: le directory .egg vengono automaticamente esaminate per le dipendenze e raggruppate, ma le funzionalità specifiche per uovo non funzioneranno in fase di runtime.
  • Supporto automatico per librerie binarie utilizzate attraverso i tipi (vedere CtypesDependencySupport per dettagli).
  • Supporto per l'imballaggio binario automatico tramite il noto compressore UPX.
  • Modalità console opzionale (vedere output standard e errore standard in fase di esecuzione).
  • Funzioni specifiche di Windows:
  • Supporto per gli eseguibili per la firma del codice.
  • Supporto automatico completo per CRT: nessuna necessità di distribuire manualmente MSVCR * .DLL, redistori di installazione, manifest o qualsiasi altra cosa; vere applicazioni one-file che funzionano ovunque!
  • Icona eseguibile selezionabile.
  • Sezione risorsa versione completamente configurabile e manifesta in eseguibile.
  • Supporto per la creazione di server COM.
  • funzioni specifici per Mac:
  • supporto Preliminare per fasci (vedi MacOsCompatibility)
+0

Ho trovato PyInstaller più adatto per le ultime versioni di Python e script con GUI PyQt e varie altre librerie. Assicurati di prendere l'ultimo codice dal suo SVN (i suoi sviluppatori non sono molto aggiornati in versioni ufficiali) –

0

Vai a Notepad ++ Menu, Plugins -> Script Python -> Mostra console. Nella finestra della console appena aperta, nella parte inferiore digitare ..... execfile ('C: /path/to/your/python/file/code.py') #Usare la barra (/) anziché la barra backwared. Premi invio o fai clic sul pulsante Esegui.

+0

La domanda evidenzia "compila" nella domanda per un ottimo motivo. L'esecuzione di uno strumento con una dipendenza python conta come un "python installato". Non è quello che la domanda sta ponendo. –

Problemi correlati