Beim Erstellen einer exe-Datei unter Windows mit py2exe gibt es viele Websites, die unerwartet in Kombination mit distutils geschrieben werden. Wenn Sie jedoch Python unter Linux usw. verwenden, sollten Sie es beim Packen auf jeden Fall in Kombination mit Distribute (Setuptools) verwenden. Das setuptools-Paket erweitert distutils, und wenn setuptools enthalten ist, werden die Parameter für die setup () -Funktion von distutils erweitert, das Paket kann im Eiformat verteilt werden und ein Befehlszeilentool namens easy_install kann verwendet werden. Oder werden.
Diese Setuptools wurden kürzlich nicht mehr aktualisiert, aber es handelt sich um eine Distribution, die die Entwicklung übernimmt und eine vollständig kompatible API bereitstellt. Wenn Sie es von nun an verwenden, sollten Sie auf jeden Fall Distribute verwenden. Ich möchte py2exe sofort erklären, aber zur Überprüfung werde ich es von Distribute erklären. (Übrigens ist jedes Konzept separat, so dass es möglicherweise nicht erforderlich ist, es zu schreiben. Für solche Personen ist diese Seite nutzlos.) </ Del>
Ein freundlicher Kommentar stellte sich heraus, dass die Verteilung veraltet war. Es ist besser, Setup-Tools zu verwenden.
Since the Setuptools 0.7 release, Setuptools and Distribute have merged and Distribute is no longer being maintained.
Zunächst werde ich die Installation allgemeiner Setup-Tools vorstellen.
$ curl -O https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py
$ sudo python ./dez_setup.py
Laden Sie einfach das Setup-Skript herunter und führen Sie es aus. Sehr leicht. Nach der Installation dieses Pakets können Sie ein Tool namens easy_install verwenden, mit dem Sie allgemeine Pakete auf site_packages installieren können (siehe Link am Ende).
Bei der Verteilung der Quelle kann übrigens nicht davon ausgegangen werden, dass Setup-Tools installiert sind. Sie können in der Dokumentation "Installieren" sagen, aber es ist etwas hässlich, dies zu tun, obwohl Sie Python verwenden, das auch Abhängigkeiten auflösen kann. Nehmen Sie in einem solchen Fall Distribute_setup.py in die Distribution auf und schreiben Sie zu Beginn von setup.py wie folgt.
setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ez_setup
ez_setup.use_setuptools()
Wenn Sie die obige Beschreibung am Anfang von setup.py einfügen, wird das Verteilungspaket installiert, wenn das Skript setup.py installiert wird.
Mit der bisherigen Installation können Setuptools importiert werden. Hier werde ich vorstellen, wie setup.py geschrieben wird, das setuptools und py2exe kombiniert. Zunächst ist die Vorlage wie folgt.
setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = "<author name>"
__author_email__ = "<author's email>"
__date__ = "<date>"
__version__ = "<version number>"
import os
from os import listdir
from os.path import join
from os.path import dirname
from os.path import splitext
import ez_setup
ez_setup.use_setuptools()
from setuptools import setup
import py2exe
def find_py_modules(dir):
py_modules = []
for f in listdir(dir):
base, ext = splitext(f)
if ext == '.py' and base != '<AppName>': py_modules.append(base)
return py_modules
def read(fname):
return open(join(dirname(__file__), fname)).read()
setup(name='VideoRecorder',
version=__version__,
description='<description>',
author=__author__,
author_email=__author_email__,
url='<project homepage>',
long_description=read('README'),
include_package_data=True,
console=[
{
'script': '<main python module>',
'icon_resources': [(1, '<icon path>'),],
},
],
package_dir = {'': 'src'},
py_modules=find_py_modules('src'),
package_data={'':['*.ini', '*.gif', '*.ico']},
data_files=[("", [<necessary dlls>]),],
zipfile=None
)
In der Vorlage ist das in <> eingeschlossene Teil das Teil, das für jeden Ersteller geändert werden muss. Die Liste ist unten angegeben.
Variable | Überblick |
---|---|
author | Name des Erstellers |
author's email | Die E-Mail-Adresse des Autors |
date | Datum |
version number | Versionsnummer |
app name | Pfad des Hauptpythonmoduls |
description | Überblick |
project homepage | Projekthomepage |
icon path | Symbolpfad |
necessary dlls | Abhängig vom erforderlichen Dateiarray und dem zu verwendenden Paket kann es erforderlich sein, DLLs und Schriftarten einzuschließen. |
Die oben genannten Variablen müssen für das Projekt angepasst werden. Die aus Distribute importierte Methode ist Setup. Die Parameter von setup.py sind wie folgt.
Parameter | Überblick |
---|---|
version | Software-Versionsnummer |
description | Softwareübersicht |
author | Name des Erstellers |
author_email | Kontaktinformationen des Erstellers |
url | Projekt-URL |
license | Lizenzinformationen (nicht in der Vorlage beschrieben) |
keywords | Schlüsselwortinformationen (in der Vorlage nicht beschrieben) |
long_description | Eine detailliertere Beschreibung der Software |
console/windows | Deklarieren Sie es als Konsolenparameter, wenn Sie eine Fehlermeldung ausgeben möchten, oder als Windows-Parameter, wenn Sie möchten, dass es als reine UI-App funktioniert. |
options | Als Wörterbuchschlüssel komprimiert, optimize, bundle_Geben Sie Dateien an. (Nicht in der Vorlage beschrieben) |
include_package_data | CVS, Subversion, MANIFEST.Bool-Wert, der angibt, ob die angegebene Datei in die In-Datei aufgenommen werden soll |
package_dir | Verzeichnisinformationen, die die Grundlage des Pakets bilden |
package_data | Ein Wörterbuch, das eine Liste von Paketnamen mit Dateinamenmustern verknüpft |
py_modules | Angeben von nicht gepackten Python-Modulen |
data_files | Angeben von Dateien, die in die Distribution aufgenommen werden sollen, außer dem echten Python-Paket |
zipfile | Geben Sie an, ob Python-Module in eine Zip-Datei konvertiert werden sollen |
Die Bedeutungen anderer Methoden werden unten erläutert. Die <> Variablen in diesen Funktionen und Vorlagen sind nicht unbedingt erforderlich, sodass Sie sie entsprechend Ihrem Projekt ändern können.
def find_py_modules(dir):
py_modules = []
for f in listdir(dir):
base, ext = splitext(f)
if ext == '.py' and base != '<AppName>': py_modules.append(base)
return py_modules
find_py_modules ist eine Modulversion (auch eine einfache Implementierung) von find_packages. Im Fall einer Anwendung, die externe Pakete kombiniert, kann die Kernquelle eine Einheit sein, die nicht gepackt werden muss. In einem solchen Fall ist es besser, den Parameter py_modules und die Methode find_py_modules (der Inhalt sollte individuell angepasst werden) anstelle des Parameters packages und der Methode find_packages zu kombinieren.
def read(fname):
return open(join(dirname(__file__), fname)).read()
Die Lesemethode ist eine Methode zum Lesen des Inhalts von long_description aus einer Datei. Dies ist eine bequeme Methode, wenn Sie eine Anwendung mit einer Skala erstellen, deren Beschreibung nicht ausreicht, um sie zu erklären.
Für setuptools selbst gibt es einen Blog mit genauen und umfassenden Informationen. Bitte lesen Sie diesen.
Ich habe beim Erstellen dieser Website auch auf diese Site verwiesen. Ich denke, dies ist der Ausgangspunkt für den Umgang mit Setuptools. Weitere Links zu easy_install und Distribute lauten wie folgt. Bei beiden handelt es sich um englische Websites. Wenn Sie also eine einfachere Erklärung wünschen, suchen Sie bei Google mit den folgenden Schlüsselwörtern (+ Python).
Recommended Posts