Exécutez Python en C ++ sur Visual Studio 2017

Contexte

Au travail (), je veux exécuter Python en C ++, et maintenant je le dois. À ce moment-là, il a fallu beaucoup de temps pour créer l'environnement, je voudrais donc le résumer une fois. Installez-en. Cela prend également du temps.

Environnement de développement

·portable ・ OS: fenêtre 10 64 bits ・ Processeur: Heppoko ・ GPU: Aucun ・ Visual Studio 2017 ・ C ++ ・ Python 3.7.4

Contenu de l'installation

・ Visual Studio 2017 ・ Python 3.7.4 ・ Boost 1.70.0

Installation: Visual Studio 2017

Accédez à l'URL ci-dessous et téléchargez "** Download Community 2017 **". Cela peut être utilisé gratuitement pour les particuliers. Nous vous recommandons également de créer un compte Microsoft. Si vous l'utilisez depuis environ un mois, vous serez informé que vous ne pourrez pas l'utiliser à moins de créer un compte et de vous connecter (peur).

URL


https://docs.microsoft.com/ja-jp/visualstudio/releasenotes/vs2017-relnotes

image.png

Puis installez. Cochez respectivement "** C ++ Desktop Development " à gauche et " WINDOWS 10 SDK **" à droite. ** Python ne peut pas être inclus ici **. Cette fois, je vais mettre en véritable Python. Vous pouvez ajouter Python (ou anaconda) par Visual studio 2017, J'ai peur de me fier personnellement à Visual studio 2017 pour Python, alors Construisez l'environnement afin qu'ils soient indépendants les uns des autres.

image.png

L'installation démarrera comme indiqué ci-dessous. image.png

Installation: Python 3.7.4

Vous pouvez vérifier comment installer Python sur de nombreux sites, mais je le posterai pour confirmation.

URL


https://www.python.org/downloads/release/python-374/

Faites défiler l'URL et vous trouverez des fichiers. Étant donné que le système d'exploitation est windosn 64 bits, téléchargez ** l'installateur exécutable windos x86-64 **.

image.png

Cochez Ajouter Python 3.7 à PATH et passez le chemin de la variable d'environnement dans votre PC.

image.png

Installation: boost 1.70.0

Téléchargez à partir de l'URL suivante.

URL


https://www.boost.org/users/history/version_1_70_0.html

boost a également un élément de bibliothèque qui relie C ++ et Python. Il y a aussi la dernière version, mais j'ai confirmé que la 1.70.0 pouvait être utilisée auparavant, donc j'ai spécifié ceci cette fois.

image.png

Téléchargez-le, décompressez-le et placez-le directement sous votre lecteur C. ** Veuillez noter que le réglage du boost prend un temps considérable. ** ** Cela prend un temps terrifiant. Alors attendez patiemment lorsque vous travaillez avec des fichiers. Je prends 30 minutes pour extraire le fichier zip. Notez l'emplacement du répertoire.

image.png

Ensuite, installez boost à l'invite de commande (cmd). ○○ est le nom d'utilisateur.

cmd


C:\Users\○○ > cd C:\boost_1_70_0
C:\boost_1_70_0>bootstrap.bat

Résultat de l'exécution de bootstrap.bat.

cmd


Building Boost.Build engine

Generating Boost.Build configuration in project-config.jam for msvc...

Bootstrapping is done. To build, run:

    .\b2

To adjust configuration, edit 'project-config.jam'.
Further information:

    - Command line help:
    .\b2 --help

    - Getting started guide:
    http://boost.org/more/getting_started/windows.html

    - Boost.Build documentation:
    http://www.boost.org/build/

J'ai installé Visual Studio 2017 en 1. Veuillez noter chaque version lors de l'installation de boost. ・ Visual Studio 2017 est mscv-14.1 ・ 64 bits x64 Aussi, installez boost en tapant ce qui suit sans déplacer le répertoire.

cmd


b2.exe toolset=msvc-14.1 link=static runtime-link=static,shared --build-dir=build/x64 address-model=64 -j5 install --includedir=C:\boost_1_70_0\include --libdir=C:\boost_1_70_0\stage\lib\x64

Exécuter un exemple de programme

Je suis prêt. Il a peut-être fallu un certain temps pour booster, mais allons-y sans faute (sueur).

Créer un nouveau projet

Lancez Visual Studio 2017 et lancez un nouveau projet. Sélectionnez une application console en C ++. Le nom du projet cette fois est test_Cplus2_Python. image.png

Définir les propriétés du projet

Cliquez avec le bouton droit sur le projet et sélectionnez Propriétés. Il existe quatre éléments de réglage.

  1. Modifiez la configuration de la solution et la plate-forme de solution. Défini à la fois sur la page de propriétés et sur l'écran principal. Il est facile d'oublier de modifier ce paramètre.
  2. Incluez boost et Python.
  3. Réglez sur multi-thread.
  4. Liez les fichiers boost et Python .lib.

Paramètres de la page de propriétés


1.Configuration de la solution et plateforme de solution
Changé de Debug à Release
x86 → x64

2. C++→ Général → Inclure supplémentaire
C:\boost_1_70_0
C:\Users\○○\AppData\Local\Programs\Python\Python37\include

3. C++→ Génération de code → Avec bibliothèque d'exécution
Multithread (/Changer en MT)

4.Linker → Général → Répertoire de bibliothèque supplémentaire
C:\boost_1_70_0\stage\lib\x64
C:\Users\○○\AppData\Local\Programs\Python\Python37\libs

Les éléments de réglage sont entourés d'un cadre extérieur rouge. ○○ est le nom d'utilisateur. image.png

Courir une seule fois

Une fois que vous avez défini les propriétés du projet, exécutez le programme une fois. En l'exécutant, vous pouvez confirmer que le projet fonctionne et créer un fichier .exe. Ce n'est pas grave si Hello world! Apparaît.

Exemple de code C ++ et Python

C ++ appelle les fichiers Python et Python (.py), vous devez donc écrire du code pour chacun. Écrivez C ++ sur Visual Studio, créez un nouveau texte pour Python et écrivez le code de test ci-dessous.

Pour C ++, définissez l'espace de noms python et rendez la fonction

test_Cplus2_with_Python.cpp


#define BOOST_PYTHON_STATIC_LIB

#include <iostream>
#include <boost/python.hpp>

int main()
{
	//Espace de nom
	namespace py = boost::python;
	//Initialisation
	Py_Initialize();
	//production
	std::cout << "Hello World! from C++ \n";

	//Fichier Python(test_py.py)Importer
	py::object module_ns = py::import("test_py").attr("__dict__");
	//Définir des fonctions dans le fichier importé
	py::object get_and_return = module_ns["hello_from_python"];
	//Exécuter la fonction importée
	auto return_nd_array = get_and_return();
}

Faites en sorte que le fichier Python soit appelé un processus simple comme suit.

test_py.py


def hello_from_python():
        print("Hello World! from Python")

Structure des dossiers

Le code C ++ que je viens de créer test_Cplus2_with_Python → Ecrire dans test_Cplus2_with_Python.cpp, Le code Python place x64 → Release → test_py.py.

Structure des dossiers


test_Cplus2_with_Python(Dossier personnalisé)
 ├── test_Cplus2_with_Python
 │  ├── test_Cplus2_with_Python.cpp 〇
 │  ├── test_Cplus2_with_Python.vcxproj
 │  ├── test_Cplus2_with_Python.vcxproj.filters
 │  ├── test_Cplus2_with_Python.vcxproj.user
 │  └── x64
 │  
 ├── x64 
 │  └── Release
 │       ├── test_Cplus2_with_Python.exe
 │       ├── test_Cplus2_with_Python.iobj
 │       ├── test_Cplus2_with_Python.ipdb
 │       ├── test_Cplus2_with_Python.pdb
 │       └── test_py.py 〇
 │ 
 └── test_Cplus2_with_Python.sln

Résultat d'exécution

Si vous pouvez sortir chaque chaîne de caractères de C ++ et Python, cela réussit.

image.png

Si tu ne peux pas, -Les paramètres de la page du projet sont incorrects. -Le code dans le fichier Python est incorrect -L'emplacement du fichier Python est incorrect -L'installation du boost est incorrecte Etc.

Réflexion

Je ne pense pas qu'il soit si courant d'appeler Python en C ++. En tant que méthode d'utilisation, elle est efficace lors de l'utilisation de l'outil d'apprentissage en profondeur de Python en C ++. J'espère sincèrement qu'il sera utile à diverses personnes, y compris les juniors. Si je peux me le permettre, j'aimerais publier une implémentation de la méthode de détection d'objet (YOLOv3) utilisant l'apprentissage profond de Python en C ++.

Github S'il vous plaît pour votre référence.

URL


git clone https://github.com/yusa0827/200121_Cplus2_with_Python

Même si je le clone et l'exécute, cela ne fonctionne pas. Veuillez réinitialiser votre propre chemin d'environnement dans Visual Studio.

Recommended Posts

Exécutez Python en C ++ sur Visual Studio 2017
Exécutez Python YOLOv3 en C ++ sur Visual Studio 2017
Développement Python avec Visual Studio
Exécutez AzureKinect en Python la veille de Noël.
Bash, Python, Javascript, commande de code, etc. dans Visual Studio Code sur Mac
Next Python en langage C
Remarque sur l'encodage lorsque LANG = C en Python
Paramètres de codage Python avec Visual Studio Code
TensorFlow: exécuter des données apprises en Python sur Android
Étendre python en C ++ (Boost.NumPy)
Exécutez Openpose sur Python (Windows)
Installez numpy dans Visual Studio 2019
Traduire de Visual Studio 2017 vers Python (API Microsoft Translator Text)
Exécuter des tâches automatisées en Python
Exécuter des commandes shell en Python
Exécuter Python unittest en parallèle
Développement d'applications pour tweeter en Python à partir de Visual Studio 2017
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
Recherche binaire en Python / C ++
Exécutez le CGI de Python sur CORESERVER
Bottle Pug dans Visual Studio 2019
Exécutez la commande unix sur python
Jusqu'à ce que vous exécutiez le serveur Django avec Visual Studio Code
Sortie japonaise lors de l'utilisation de python dans Visual Studio
Développement du kit SDK AWS pour Python (Boto3) dans Visual Studio 2017
Comment déboguer une bibliothèque Python standard dans Visual Studio
Faites quelque chose comme un interpréteur Python avec Visual Studio Code
Installer python et Visual Studio Code sur Windows10 (version d'avril 2020)
Créer Python3 pour Windows 10 sur ARM avec Visual Studio 2019 (x86) sur Windows 10 sur ARM
Lançons "python -m antigravity" en python
Exécutez la commande shell / Python dans R
ABC166 en Python A ~ C problème
Exécutez Python selon la planification sur AWS Lambda
Résoudre ABC036 A ~ C avec Python
Comment envelopper C en Python
Débogage à distance dans Visual Studio (Linux)
Exécutez des scripts Python de manière synchrone à partir de C #
Résoudre ABC037 A ~ C avec Python
Exécutez un algorithme simple en Python
Ecrire un test unitaire de langage C en Python
Appeler C / C ++ depuis Python sur Mac
Exécutez régulièrement Python sur Heroku Scheduler
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Une note à ceux qui utilisent Python dans Visual Studio (moi)
Installation du code Visual Studio et installation de python
Résoudre ABC175 A, B, C avec Python
Exécutez le servo avec Python sur ESP32 (Windows)
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
Trouver des fichiers comme Linux Find en Python
Note de nfc.ContactlessFrontend () de nfcpy de python
Algorithme en Python (ABC 146 C Dichotomy
Implémenter le filtre FIR en langage Python et C
[Python] Exécutez Flask sur Google App Engine
[C] [python] Lire avec AquesTalk sous Linux
Ecrire le fichier O_SYNC en C et Python
Exécuter l'interpréteur Python dans le script
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
[Python] Exécutez Headless Chrome sur AWS Lambda
Exécutez le code Python sur A2019 Community Edition
Guide d'installation des outils Python pour Visual Studio
Générer un langage C à partir d'une expression S avec Python