Ich baue ein Python-Paket mit einer C-Bibliothek mit Ctypes. Ich möchte mein Paket portierbar machen (Windows, Mac und Linux).Wie vermeidet man, C-Bibliothek mit meinem Python-Paket zu erstellen?
Ich habe eine Strategie gefunden, build_ext
mit pip
zu verwenden, um die Bibliothek während der Installation meines Pakets zu erstellen. Je nach Plattform des Ziels wird libfoo.dll
oder libfoo.dylib
oder libfoo.so
erstellt.
Das Problem damit ist, dass mein Benutzer CMake installiert benötigt.
Gibt es eine andere Strategie, um das Bauen während der Installation zu vermeiden? Muss ich gebaute Bibliotheken in meinem Paket bündeln?
Ich möchte meine Benutzer tun pip install mylib
.
bearbeiten: danke Kommentar @Dawid, Ich versuche, ein python wheel
mit dem Befehl python setup.py bdist_wheel
ohne Erfolg.
Wie kann ich mein Python Wheel für verschiedene Plattformen mit der eingebetteten Bibliothek erstellen?
Edit 2: ich Python bin mit 3.4 und arbeitet an Mac OS X, aber ich habe den Zugriff auf Windows-Computer und Linux-Computer
Ja, Sie müssen Rad-Pakete (binär kompiliert) für bestimmte Plattformen, 'pip install wheel' erstellen und dann für die erforderlichen Plattformen bauen – Dawid
@Dawid danke, ich habe versucht, ein Python-Rad zu erstellen, aber ich denke, ich bin etwas fehlt –
Ich denke, Sie müssen Informationen über diese Bibliothek in 'setup.py' enthalten, so dass es gebaut würde. Etwas auf https://docs.python.org/3.4/extending/building.html auf diese Weise führt 'python setup.py bdist_wheel' auf jeder Plattform ein whl-Paket für diese Plattform mit kompilierter Bibliothek aus. Dann werden Benutzer unter Linux das Paket für Linux, Windows für Windows und Mac für Mac installieren. Zumindest was ich tun würde, um ein Binärpaket für diese Systeme zu erstellen. – Dawid