2010-11-11 2 views
21

So habe ich ein Python-Skript:Kann ich irgendwie ein Python-Skript "kompilieren", um auf dem PC zu arbeiten, ohne dass Python installiert ist?

python D:\myscript.py 

Allerdings muss ich habe Python installiert und in der PATH Umgebungsvariablen enthalten für die Arbeit:

myscript.py 

ich es so bin Ausführung.

Ist es irgendwie möglich, Python-Programmdateien mit einem Python-Skript zu "bündeln", damit andere Benutzer es ohne Python auf ihren PCs ausführen können?

Es ist in Ordnung, wenn es nur in Windows funktioniert.

EDIT:

Nach dem compile.py versuche ich diesen Fehler:

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

Um den Importfehler zu beheben, müssen Sie die richtige Version von 'py2exe' (32 oder 64 Bit abhängig von Ihrem Python-Setup) installieren und zusätzlich überprüfen, ob der Ordner, in dem es installiert ist, in' sys.path enthalten ist ' – Unode

Antwort

17

Hier ist eine Möglichkeit (für Windows mit py2exe).

Zuerst installieren Sie die py2exe auf Ihrer Windows-Box.

Dann ein Python-Skript erstellen compile.py genannt, wie folgt aus:

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) 

Um Ihre Python-Skript in eine ausführbare Windows-Datei zu kompilieren, dieses Skript mit Ihrem Programm als Argument ausgeführt:

$ python compile.py myscript.py 

Es spuckt eine binäre ausführbare Datei (EXE) mit einem darin kompilierten Python-Interpreter aus. Sie können diese ausführbare Datei dann einfach verteilen.

+0

Danke. Ich bekomme jedoch einen Fehler. Überprüfen Sie meine aktualisierte Antwort. –

+0

hast du py2exe installiert? –

+0

Ja. Ich habe py2exe-0.6.9.win64-py2.5.amd64 von Sourceforge heruntergeladen und installiert. –

5

Here ist eine Liste von ihnen.

11

PyInstaller hat gut für mich funktioniert, durch die Verwendung von Upx einigermaßen kleine Pakete zu generieren. Seine Abhängigkeitserkennung war zu dieser Zeit auch besser als py2exe. Es scheint nicht viel neuere Entwicklung zu haben und funktioniert wahrscheinlich nicht mit 3.x.

Die Quelle im Repository ist ein besserer Ausgangspunkt als das 1.4-Paket.

Siehe auch die Wiki-Seite zum Arbeiten mit Python 2.6+.

aus der Liste Features:

  • Verpackung von Python-Programmen in Standard ausführbarer Dateien, installiert, dass die Arbeit auf Computer ohne Python.
  • Multiplattform: funktioniert unter Windows (32-Bit und 64-Bit), Linux (32-Bit und 64-Bit) und Mac OS X (nur 32-Bit für jetzt, siehe MacOsCompatibility).
  • Multiversion: funktioniert unter jeder Version von Python von 1.5 bis 2.7. HINWEIS: Wenn Sie Python 2.6+ unter Windows verwenden, lesen Sie Python26Win.
  • Flexibler Packmodus:
  • Einzelnes Verzeichnis: Erstellen Sie ein Verzeichnis, das eine ausführbare Datei sowie alle externen binären Module (.dll, .pyd, .so) enthält, die vom Programm verwendet werden.
  • Einzelne Datei: Erstellen Sie eine einzelne ausführbare Datei, vollständig unabhängig, die ohne externe Abhängigkeit ausgeführt wird.
  • Benutzerdefiniert: Sie können PyInstaller automatisieren, um den gewünschten Verpackungsmodus über eine einfache Skriptdatei in Python auszuführen.
  • Explizite intelligente Unterstützung für viele 3rd-Pakete (für versteckte Importe, externe Datendateien, etc.), um sie mit PyInstaller out-of-the-box (siehe SupportedPackages) arbeiten zu lassen.
  • Vollständige EGG-Unterstützung in einer einzigen Datei: erforderliche .egg-Dateien werden automatisch auf Abhängigkeiten geprüft und gebündelt, und alle eispezifischen Funktionen werden auch zur Laufzeit unterstützt (Einstiegspunkte usw.).
  • Teilverzeichnis EGG Unterstützung: erforderlich .egg Verzeichnisse werden automatisch auf Abhängigkeiten geprüft und gebündelt, aber Ei-spezifische Funktionen werden zur Laufzeit nicht funktionieren.
  • Automatische Unterstützung für Binärbibliotheken, die über Ctypes verwendet werden (Details siehe CtypesDependencySupport).
  • Unterstützung für automatische Binärpackung durch den bekannten UPX-Kompressor.
  • Optionaler Konsolenmodus (siehe Standardausgabe und Standardfehler zur Laufzeit).
  • Windows-spezifische Funktionen:
  • Unterstützung für ausführbare Code-Signaturen.
  • Volle automatische Unterstützung für CRTs: Sie müssen MSVCR * .DLL nicht manuell verteilen, Installateure, Manifeste oder irgendetwas anderes rediszieren; echte One-File-Anwendungen, die überall funktionieren!
  • Auswählbares ausführbares Symbol.
  • Vollständig konfigurierbare Versionsressourcen und Manifeste in ausführbaren Dateien.
  • Unterstützung für den Aufbau von COM-Servern.
  • Mac-spezifische Funktionen:
  • Preliminar Unterstützung für Bundles (siehe MacOsCompatibility)
+0

Ich habe PyInstaller besser für die neuesten Versionen von Python und Skripte mit PyQt GUIs und verschiedene andere Bibliotheken geeignet gefunden. Stellen Sie sicher, dass Sie den neuesten Code von seinem SVN nehmen (seine Entwickler sind nicht viel in aktualisierte formale Releases) –

0

Zum Notepad ++ Menü Plugins -> Python-Skript -> Show-Konsole. Im neu geöffneten Konsolenfenster, unten tippen Sie ..... execfile ('C: /path/to/your/python/file/code.py') #Verwenden Sie Schrägstrich (/) anstelle von Backwared Slash. Hit zurück oder klicken Sie auf Ausführen.

+0

Die Frage hebt "compile" in der Frage aus einem sehr guten Grund hervor. Das Ausführen eines Tools mit einer Python-Abhängigkeit gilt als "installiertes Python". Das ist nicht das, was die Frage verlangt. –

Verwandte Themen