Erstellen Sie mit Pybind11 eine Umgebung zum Ausführen von C ++ - Funktionen aus Python (für Benutzer von Windows- und Visual Studio-Code).

Ich werde erklären, wie eine Umgebung erstellt wird, in der C ++ - Funktionen mit Pybind11 aus Python aufgerufen werden können. Es gab nicht viele Artikel für Benutzer von Windows und Visual Studio Code, daher fasse ich zusammen, was ich recherchiert habe. Der Editor muss jedoch nicht Visual Studio Code sein.

0. Umwelt

Wir haben in der folgenden Umgebung bestätigt. CMake Die folgende Installationsmethode wird in diesem Artikel erläutert.

1. Umweltbau

1.1. CMake installieren

CMake ist ein Tool, das die Einstellungen zum Erstellen von C ++ usw. verschiedenen Compilern zur Verfügung stellt. Ich bin mir jedoch selbst nicht sicher. Weitere Informationen finden Sie unter hier.

Laden Sie das Windows win64-x64-Installationsprogramm von der Download-Seite (https://cmake.org/download/) herunter und installieren Sie es.

1.2. Installieren von Mingw-w64

Mingw-w64 ist die Windwos 64-Bit-Version des kostenlosen C ++ - Compilers g ++. Ich bin mir auch nicht sicher, also fragen Sie bitte Herrn Google.

Laden Sie das Installationsprogramm usw. von der [Download-Seite] herunter (https://sourceforge.net/projects/mingw-w64/files/). Wenn Sie sich in einer Online-Umgebung befinden, installieren Sie sie mit dem Installationsprogramm "MinGW-W64-install.exe". Wenn Sie sich in einer Offline-Umgebung befinden, installieren und extrahieren Sie die Datei im 7z-Format.

In diesem Artikel lautet die Platzierung von g ++. Exe wie folgt: D: \ UserProgram \ mingw-w64 \ x86_64-8.1.0-posix-seh-rt_v6-rev0 \ mingw64 \ bin \ g ++. Exe

Fügen Sie als Nächstes den obigen Ordner zur Umgebungsvariablen Pfad hinzu. Mit Powershell hinzufügen

Pro Benutzer


> $envPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
> $envPath += ";D:\UserProgram\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin" #←g++.Der Pfad, der die Exe enthält
> [System.Environment]::SetEnvironmentVariable("Path", $envPath, "User")

Ersetzen Sie "Benutzer" in der ersten und dritten Zeile durch "Macine", um die Einstellung pro Terminal vorzunehmen. In diesem Fall benötigen Sie Administratorrechte.

Terminaleinheit (Administratorberechtigung erforderlich)


> $envPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
> $envPath += ";D:\UserProgram\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin" #←g++.Der Pfad, der die Exe enthält
> [System.Environment]::SetEnvironmentVariable("Path", $envPath, "Machine")

1.3. Pybind installieren 11

Wenn Sie sich in einer Online-Umgebung befinden, installieren Sie mit pip.

Powershell


> pip install pybind11

Für die Offline-Umgebung Laden Sie pybind11-xyz-py2.py3-none-any.wh (x, y, z sind Zahlen) von der [PyPI-Download-Seite] herunter (https://pypi.org/project/pybind11/#files). Dann mit pip installieren.

Powershell


>Pip Install Download-Ziel/pybind11-2.5.0-py2.py3-none-any.whl  #2.5.0 Teil sollte entsprechend gelesen werden

Ich werde auch das offizielle Beispiel zur späteren Verwendung herunterladen. Wenn Sie online sind (und Git installiert haben), gehen Sie zu dem Speicherort, den Sie auf Powershell und herunterladen möchten

Powershell


git clone --recursive https://github.com/pybind/cmake_example.git

Herunterladen als. Klicken Sie in Offline-Umgebungen im offiziellen Beispiel auf die Schaltfläche "Klonen oder Herunterladen" (https://github.com/pybind/cmake_example). Laden Sie auf die gleiche Weise auch den Ordner pybind11 herunter.

** [Wichtig] Ersetzen Sie die Dateien unter "cmake_example / pybind11 / include / pybind11" durch die Dateien unter "C: \ ProgramData \ Anaconda3 \ include \ pybind11". ** Die Datei vor dem Ersetzen scheint alt zu sein und wird kompiliert, aber ich erhalte viele Warnungen "Warnung:" void PyThread_delete_key_value (int) "ist veraltet [-Wdeprecated-Deklarationen]".

2. Ich werde es versuchen (■ 1 ■)

Kopieren Sie aus dem zuvor heruntergeladenen Ordner "cmake_exmple" "pybind11", "src" und "CMakeLists.txt" in einen geeigneten Ordner (im Folgenden als "project_root" bezeichnet).

Ordnerstruktur


project_root
├ pybind11
│ ├ docs
│ ├ include
│ │ └pybind11   #Der Inhalt dieses Ordners
│ │ └ ・ ・ ・# C:\ProgramData\Anaconda3\include\Durch den Inhalt von pybind11 ersetzen
│ └ ・ ・ ・
├ src
│ └main.cpp
└ CMakeLists.txt

project_root/src/main.cpp


#include <pybind11/pybind11.h>

int add(int i, int j) {
    return i + j;
}

namespace py = pybind11;

PYBIND11_MODULE(cmake_example, m) {
    (Abkürzung)
    m.def("add", &add, R"pbdoc(
        Add two numbers

        Some other explanation about the add function.
    )pbdoc");
   (Abkürzung)
}

project_root/CMakeLists.txt


cmake_minimum_required(VERSION 2.8.12)
project(cmake_example)

add_subdirectory(pybind11)
pybind11_add_module(cmake_example src/main.cpp)

Öffnen Sie "project_root" in Visual Studio Code, gehen Sie mit "Strg + @" zum Terminal und gehen Sie wie folgt vor:

Powershell


> mkdir build                      #Erstellen Sie einen Build-Zielordner
> cd build                         #Zum Erstellen des Ziels verschieben
> cmake -G "MinGW Makefiles" ..    #Konfigurieren und generieren
> cmake --build ..                 #Bauen

Bei Erfolg wird "cmake_example.cp37-win_amd64.pyd" im Ordner "build" erstellt. Versuchen wir es im vorherigen Terminal.

Powershell


> python           #Starten Sie Python
>>> from cmake_example import add 
>>> add(1,2)
3
>>> exit()         #Kehre zu Powershell zurück

Wenn Sie die Funktion "Hinzufügen" aufrufen können, sind Sie erfolgreich.

3. Fazit

Vielen Dank für das Lesen bis zum Ende. Ich habe nur das offizielle Beispiel in diesem Artikel verwendet, aber bitte beziehen Sie sich auf die Artikel anderer Leute und ändern Sie "main.cpp" und "CMakeLists.txt". Ich bin mit C ++ nicht vertraut, daher habe ich eine Weile gebraucht, um genau dies zu tun. Ich möchte mein C ++ - Debüt geben. Außerdem möchte ich in Kürze untersuchen, wie die VS-Code-Erweiterung CMake Tools verwendet wird, und einen Artikel schreiben.

Referenz

Ich habe auf den folgenden Artikel verwiesen.

So installieren Sie Mingw-w64

Erklärung von CMake

Verwendung von Pybind 11

Recommended Posts

Erstellen Sie mit Pybind11 eine Umgebung zum Ausführen von C ++ - Funktionen aus Python (für Benutzer von Windows- und Visual Studio-Code).
Erstellen Sie eine Python-Entwicklungsumgebung mit Visual Studio Code
Python-Entwicklungsumgebung mit Windows + Anaconda3 + Visual Studio Code
Python-Entwicklungsumgebung mit Windows + Python + PipEnv + Visual Studio-Code
Erstellen Sie Python3 für Windows 10 unter ARM mit Visual Studio 2019 (x86) unter Windows 10 unter ARM
Versuchen Sie, eine Python-Umgebung mit Visual Studio Code & WSL zu erstellen
Verwenden von C ++ - Funktionen aus Python mit pybind11
Hinweise von der Installation von Homebrew bis zum Erstellen einer Anaconda-Umgebung für Python mit pyenv
Ich habe versucht, eine Umgebung mit WSL + Ubuntu + VS-Code in einer Windows-Umgebung zu erstellen
Eine echte Möglichkeit für Benutzer von Python 3.8.0-2 aus Windows, mit Multi-Byte-Zeichen zu arbeiten
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Aktivieren Sie die virtuelle Python-Umgebung von virtualenv für Visual Studio Code
Führen Sie Python-Code über die C # -GUI aus
So erstellen Sie eine virtuelle Ausführungsumgebung für Python mit Visual Studio Code und pipenv auf einem Windows-Computer (auch Jupyter-Notebook)
Vom Aufbau einer Python-Umgebung für unerfahrene Personen bis zur Hello-Welt
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Erstellen Sie eine Umgebung für das in Blender integrierte Python
Eine Einführung in Python für C-Sprachprogrammierer
Erstellen Sie eine Python-Entwicklungsumgebung unter Windows (Remote-WSL für Visual Studio Code).
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows
Von der Re-Environment-Konstruktion von Python bis zur grafischen Zeichnung (auf Visual Studio-Code)
Für Anfänger, um eine Anaconda-Umgebung aufzubauen. (Memo)
So erstellen Sie eine Umgebung für die Verwendung mehrerer Python-Versionen auf einem Mac
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Wickeln Sie C mit Cython für Python ein
Zeichencode zum Lesen und Schreiben von CSV-Dateien mit Python ~ Windows-Umgebung ver ~
Django mit Python Tools 2.2 für Visual Studio (PTVS 2.2)
Bildverarbeitung mit Python Environment Setup für Windows
Ich habe es mit Visual Studio Code (hauptsächlich für Python) angepasst, daher werde ich es zusammenfassen
Einstellungen für die Python-Codierung mit Visual Studio-Code
Wrap C ++ mit Cython zur Verwendung von Python
Ich möchte C ++ - Code aus Python-Code erstellen!
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Erstellen Sie eine lokale Entwicklungsumgebung mit WSL + Docker Desktop für Windows + Docker-Lambda + Python
[Visual Studio Code] [Python] Tasks.json + problemMatcher-Einstellungen für Python
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Eine Geschichte darüber, wie Windows 10-Benutzer eine Umgebung für die Verwendung von OpenCV3 mit Python 3.5 erstellt haben
Umgebungskonstruktion für diejenigen, die Python einfach mit VSCode (für Mac) lernen möchten
[Cloud 9] Versuchen Sie, eine Umgebung mit Django 1.11 von Python 3.4 zu erstellen, ohne auch nur 1 mm zu verstehen
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Vorbereiten der Verwendung von Tensorflow (Anaconda) mit Visual Studio Code
App-Entwicklung zum Twittern in Python aus Visual Studio 2017
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
[Linux] WSL2 Erstellen Sie mit Ubuntu 20.04 eine Umgebung für laravel7
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Stellen Sie sicher, dass Visual Studio Code die externe Bibliothek von Python automatisch vervollständigt
[Visual Studio Code] [Python] [Windows] Unterstützung für verstümmelte japanische Zeichen in der VS Code-Task- / Debug-Ausgabe
[Sakura Rental Server] (Für Anfänger) So erstellen Sie eine Umgebung für Python, Pyenv und Flask. Für csh
Rufen Sie C-Sprachfunktionen von Python auf, um mehrdimensionale Arrays auszutauschen
Neuerstellung der Umgebung für maschinelles Lernen mit Miniconda (Windows-Version)
OpenJTalk unter Windows 10 (Sprechen Sie Japanisch mit Python aus der Umgebungskonstruktion)
Erstellen Sie eine Umgebung für maschinelles Lernen mit Python unter MacOSX
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"