Auf einigen Plattformen können Sie Nicht-Quelldateien einschließen, die vom Compiler verarbeitet und in der Erweiterung enthalten sind. Derzeit bedeutet dies nur Windows-Nachrichtentextdateien (.mc) und Ressourcendefinitionsdateien (.rc) für Visual C++. Diese werden in binäre Ressourcendateien (.res) kompiliert und mit der ausführbaren Datei verknüpft. Ich stimme @kimbo-kaz zu. Ich kann keine Dateien, die nicht heruntergeladen werden können (vollständig). Das manuelle Aufräumen von Exe-Dateien aus SourceForge kann eine Problemumgehung sein, löst jedoch keine Fehlerbeifunktion des ttf-mscorefonts-installers. Es gibt nur zwei Unterschiede zwischen dieser und der trivialen One-File-Distribution, die in Abschnitt A Simple Example vorgestellt wird: mehr Metadaten und die Spezifikation reiner Python-Module nach Paket und nicht nach Modul. Dies ist wichtig, da die Distutils aus ein paar Dutzend Modulen bestehen, die in (bisher) zwei Pakete aufgeteilt sind; eine explizite Liste jedes Moduls wäre mühsam zu generieren und schwierig zu verwalten. Weitere Informationen zu den zusätzlichen Metadaten finden Sie im Abschnitt Zusätzliche Metadaten.

Ich wurde wiederholt über ein «Fehler beim Herunterladen zusätzlicher Datendateien» informiert: Wenn Ihre Erweiterung beispielsweise Headerdateien im Include-Verzeichnis unter Ihrem Distributionsstamm benötigt, verwenden Sie die Option include_dirs: Skripte sind Dateien, die Python-Quellcode enthalten, die über die Befehlszeile gestartet werden sollen. Skripte erfordern nicht, dass Distutils etwas sehr Kompliziertes tut. Die einzige clevere Funktion ist, dass, wenn die erste Zeile des Skripts mit der Nummer beginnt! und enthält das Wort «Python», die Distutils passt die erste Zeile an die aktuelle Interpreterposition. Standardmäßig wird sie durch die aktuelle Interpreterposition ersetzt. Mit der Option –executable (oder -e) kann der Interpreterpfad explizit überschrieben werden. Die Option data_files kann verwendet werden, um zusätzliche Dateien anzugeben, die von der Modulverteilung benötigt werden: Konfigurationsdateien, Nachrichtenkataloge, Datendateien, alles, was nicht in die vorherigen Kategorien passt. Genauso wie das Schreiben von Python-Erweiterungsmodulen etwas komplizierter ist als das Schreiben reiner Python-Module, ist es etwas komplizierter, sie den Distutils zu beschreiben. Im Gegensatz zu reinen Modulen reicht es nicht aus, nur Module oder Pakete aufzulisten und zu erwarten, dass die Distutils die richtigen Dateien finden; Sie müssen den Erweiterungsnamen, die Quelldatei(n) und alle Kompilierungs-/Linkanforderungen angeben (einschließlich Verzeichnisse, Bibliotheken, mit denen eine Verknüpfung hergestellt werden soll usw.).

Sie können die data_files Optionen als einfache Sequenz von Dateien angeben, ohne ein Zielverzeichnis anzugeben, dies wird jedoch nicht empfohlen, und der Befehl install wird in diesem Fall eine Warnung drucken. Um Datendateien direkt im Zielverzeichnis zu installieren, sollte eine leere Zeichenfolge als Verzeichnis angegeben werden. Sie können jedoch auch SWIG-Schnittstellendateien (.i) in die Liste aufnehmen. Der Befehl build_ext weiß, wie man mit SWIG-Erweiterungen umgeht: Er führt SWIG in der Schnittstellendatei aus und kompiliert die resultierende C/C++-Datei in Ihre Erweiterung. Die Skriptoption ist einfach eine Liste der Dateien, die auf diese Weise behandelt werden sollen. Aus dem PyXML-Setup-Skript: > Informationen verfügbar > Update-Informationen > > **Fehler beim Herunterladen zusätzlicher Datendateien** > > > Die folgenden Pakete forderten zusätzliche Datendownloads nach der Paketinstallation > an, aber die Daten konnten nicht heruntergeladen oder nicht verarbeitet werden. > > > ttf-mscorefonts-installer > > Der Download wird später erneut versucht, oder Sie können den Download > jetzt erneut versuchen. Das Ausführen dieses Befehls erfordert eine aktive Internetverbindung. All dies geschieht über ein anderes Schlüsselwortargument zu setup(), der ext_modules Option. ext_modules ist nur eine Liste von Erweiterungsinstanzen, von denen jede ein einzelnes Erweiterungsmodul beschreibt. Angenommen, Ihre Distribution enthält eine einzelne Erweiterung, die foo genannt und von foo.c implementiert wird. Wenn keine zusätzlichen Anweisungen für den Compiler/Linker erforderlich sind, ist die Beschreibung dieser Erweiterung ganz einfach: Siehe ubuntuforums.org/showthread.php?t=2344990&p=13576874#post13576874 Für ein Work around Each (Verzeichnis, Dateien) Paar in der Sequenz gibt das Installationsverzeichnis und die Dateien dort zu installieren.