Anweisungen zum schnellen Veröffentlichen einer C ++ - Python-Bibliothek mit pybind11 auf Github

Es gibt viele Artikel, die in C ++ geschriebene Bibliotheken von Python mit pybind11 verfügbar machen. Ich hatte das Gefühl, dass nicht viel darüber geredet wurde, wie ich das, was ich gemacht habe, veröffentlichen sollte.

In diesem Artikel werde ich die Vorgehensweise zum Erstellen eines Github-Repositorys beschreiben, das basierend auf der von pybind offiziell bereitgestellten Vorlage "cmake_example" veröffentlicht werden kann. Wenn Sie dieses Verfahren bis zum Ende ausführen, verfügen Sie über ein Repository, das Benutzer mit nur wenigen Befehlen installieren und verwenden können.

1. Klonen Sie cmake_example

cmake_example ist eine offizielle Vorlage, die für die Erstellung mit CMake eingerichtet wurde. Holen Sie sich das zuerst.

cd work  #Geben Sie ein geeignetes Arbeitsverzeichnis ein
git clone https://github.com/pybind/cmake_example.git

2. Erstellen und klonen Sie Ihr eigenes Github-Repository

Das Erstellen eines Repositorys entfällt. Nehmen wir an, der Repository-Name lautet "mylib". Sie können .gitignore frei erstellen, beachten Sie jedoch, dass Sie es später mit dem von cmake_example kombinieren müssen. Sie können öffentlich / privat einstellen, wie Sie möchten. Klone es, wenn du kannst.

git clone https://github.com/*****/mylib.git

3. Fügen Sie pybind11 als Submodul zu Ihrem Github-Repository hinzu

cd mylib
git submodule add -b master https://github.com/pybind/pybind11.git pybind11

Unter dem Verzeichnis "pybind11 /" werden verschiedene Downloads durchgeführt und ".gitmodules" generiert.

4. Kopieren Sie die minimal erforderlichen Dateien

Kopieren Sie die erforderlichen Dateien und Verzeichnisse aus dem Verzeichnis "cmake_example /" nach "mylib /". Die minimal erforderlichen Elemente sind wie folgt.

Benennen Sie "LIZENZ" in "LIZENZ.pybind" um und bereiten Sie eine separate "LIZENZ" für Ihr Projekt vor. Wie oben erwähnt, führen Sie für .gitignore Ihre eigene mit cmake_example zusammen.

5. Bearbeiten Sie CMakeLists.txt

Ändern Sie den Teil, in dem "cmake_example" geschrieben ist, in Ihren eigenen Bibliotheksnamen.

CMakeLists.txt


cmake_minimum_required(VERSION 2.8.12)
project(mylib) <--

add_subdirectory(pybind11)
pybind11_add_module(mylib src/main.cpp) <--

6. Bearbeiten Sie setup.py

Schreiben Sie den Setup-Aufruf-Teil unten mit Ihren eigenen Informationen neu.

setup.py


setup(
    name='mylib', <-
    version='1.0.0', <-
    author='oreore', <-
    author_email='[email protected]', <-
    description='HogeHoge', <-
    long_description='', <-
    ext_modules=[CMakeExtension('mylib')], <-
    cmdclass=dict(build_ext=CMakeBuild),
    zip_safe=False,
)

Fügen Sie bei Bedarf die Anforderungen der externen Bibliothek wie folgt zur Beschreibung hinzu.

    ...
    zip_safe=False,
    packages=find_packages(),
    install_requires=['pillow']

7. Bearbeiten Sie den Quellcode

Schreiben Sie den Bibliotheksnamen in "mylib" unter Angabe von "PYBIND11_MODULE" in "main.cpp" um.

PYBIND11_MODULE(mylib, m) {

Erstellen Sie danach den Code nach Ihren Wünschen und fügen Sie ihn nach Bedarf zu "CMakeLists.txt" hinzu.

8. Bauen

python setup.py build

OK, wenn keine Fehler vorliegen

9. Installieren

python setup.py install

10. Überprüfen Sie den Betrieb

Verlassen Sie das Verzeichnis "mylib /", starten Sie Python, importieren Sie die Bibliothek und überprüfen Sie den Vorgang. Wenn Sie "mylib /" einchecken, besteht die Möglichkeit, dass die Datei im aktuellen Verzeichnis aufgrund des Einflusses der Dateisuchreihenfolge anstelle der installierten Datei verwendet wird.

>>> import mylib
>>> mylib.add(1, 2)
>>> 3

11. Festschreiben und veröffentlichen

Führen Sie die folgenden drei Schritte aus, um Benutzer dazu zu bringen, das zu verwenden, was Sie erstellt haben.

11.1. Halten Sie den Compiler und CMake bereit

Im Falle von Ubuntu etc.

sudo apt install build-essential cmake

Sie müssen es nur treffen. Wenn Sie ein Windows-Benutzer sind, geben Sie Ihr Bestes, um Visual Studio 2019 und CMake separat zu installieren (Sie müssen CMake auch über den Pfad führen, was schmerzhaft ist).

11.2. Lassen Sie das Repository klonen

Bitten Sie den Benutzer, beim Klonen des Repositorys den folgenden Befehl auszuführen.

git clone --recursive https://github.com/******/mylib.git

Wenn Sie "--recursive" nicht hinzufügen, wird "pybind11" nicht heruntergeladen und Sie können es nicht erstellen. Beschreiben Sie es daher ordnungsgemäß.

11.3 Setup.py ausführen lassen

python setup.py install

Ich habe dich geschlagen. das ist alles.

Ergänzung 1. Wenn Sie Python-Code einschließen möchten

Wenn Sie nicht nur die C ++ - Bibliothek, sondern auch den Python-Code bereitstellen möchten, ändern Sie den Namen der C ++ - Bibliothek in "_mylib" und laden Sie ihn als Import aus "mylib / __ init __. Py".

Machen Sie zuerst CMakeLists.txt wie folgt.

CMakeLists.txt


project(_mylib)
...
pybind11_add_module(_mylib src/main.cpp)

Dann setup.py

setup.py


ext_modules=[CMakeExtension('mylib._mylib')],

Dies bedeutet, dass die Build-Artefakte in mylib / _mylib **** (.so oder .pyd) abgelegt werden.

Dann src / main.cpp

src/main.cpp


PYBIND11_MODULE(_mylib, m) {

Bereiten Sie abschließend das Verzeichnis "mylib /" vor, in dem sich der Python-Quellcode befindet, und schreiben Sie "__init __. Py".

mylib/__init__.py


from ._mylib import *

Fügen Sie dann den Python-Code nach Ihren Wünschen hinzu.

Ergänzung 2. Bei der Entwicklung mit Visual Studio 2019

Da ich CMake verwende, werde ich eine Lösungsdatei für Visual Studio generieren.

Erstellen Sie ein Verzeichnis "build /" und führen Sie cmake darin aus.

mkdir build
cd build
cmake .. -G "Visual Studio 16 2019"

Da build / mylib.sln generiert wird, entwickeln Sie damit. Das Verzeichnis "build /" ist in ".gitignore" enthalten. Wenn Sie also Lösungsdateien usw. im Repository registrieren möchten, verwenden Sie ein anderes Verzeichnis anstelle von "build".

Recommended Posts

Anweisungen zum schnellen Veröffentlichen einer C ++ - Python-Bibliothek mit pybind11 auf Github
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
Führen Sie Python-Code unter C ++ aus (mit Boost.Python).
Installieren Sie die Python-Bibliothek auf Lambda mit [/ tmp]
Erstellt ein Bibliotheksverwaltungstool nur für Header für C / C ++
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Verfahren zum Erstellen einer Python-Isolationsumgebung (venv-Umgebung)
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Installieren Sie PyCall auf Raspberry PI und versuchen Sie, die GPIO-Bibliothek für Python von Ruby zu verwenden
Grundeinstellungen für die Verwendung von Python3.8 und pip unter CentOS8
Installieren Sie psycopg2 (pgsql-Bibliothek für Python3) auf Apple Silicon
Erstellen Sie die Python-Erweiterung E-Cell 4 unter Windows 7 (64 Bit).
[Heroku] Memo zum Bereitstellen von Python-Apps mit Heroku unter Windows [Python]
Versuchen Sie, Python mit pybind11 in ein C ++ - Programm einzubetten
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
[Einführung in Python] Hochgeschwindigkeits-Einführung in Python für vielbeschäftigte C ++ - Programmierer
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Ich habe mit Github-Aktionen ein Rad für Windows erstellt
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Vorgehensweise zum Erstellen eines Linienbot in AWS Lambda
Einstellungen zum Testen von C ++ 11 Python-Modulen mit Travis CI
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Betten Sie einen Python-Interpreter mit pybind11 + cmake in eine C ++ - App ein
Erstellen Sie eine Umgebung für maschinelles Lernen mit Python unter MacOSX
Erstellen einer Python-Umgebung auf einem Mac bis zur Verwendung von Jupyter Lab
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Verwenden Sie Python auf Raspberry Pi 3, um "Temperatur (mit A / D-Wandler)" zu erkennen!
Zugriff auf Google Spreadsheets Verwenden von Python mit Himbeer-Pi (für sich selbst)
Ein Beispiel zum Zeichnen von Punkten mit PIL (Python Imaging Library).
Versuchen Sie, ein neuronales Netzwerk in Python aufzubauen, ohne eine Bibliothek zu verwenden
Memo zum Erstellen einer Python-Umgebung mit Docker unter Windows 10 Home
Erstellen Sie die Python-Erweiterung E-Cell 4 unter Mac OS X (Yosemite).
Erstellen Sie ein Python-Skript für Wake on LAN (Wake on LAN über NAT [5])
Bibliothek zur Angabe eines Nameservers in Python und Dig
Erstellen einer virtuellen Umgebung für Python auf dem Mac [Sehr einfach]
Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver
Verwenden Sie eine Skriptsprache für ein komfortables C ++ - Leben - OpenCV-Port Python zu C ++ -