cppyy 入門
目次
1 概要
- PythonからC++やCと連携するのが非常に楽に出来るパッケージ
- C++やCのインタプリタ、CERNのROOTの技術を利用しているようだ
- 色々あった、既存のPythonとの連携ツールは、ソースを改造したり、追加のソースが必要となったが、これはほぼ無しで動く
2 関連リンク
2.1 以下の説明を行っている動画
2.2 cppyy関連
- cppyy ソース https://bitbucket.org/wlav/cppyy/src/master/
- 文書 https://cppyy.readthedocs.io/en/latest/
- ただし一部のソースがそのままじゃ動かない(古いバージョンのソースが残ってるのかも)
- Basic Types https://cppyy.readthedocs.io/en/latest/basic_types.html
- lowlevel https://cppyy.readthedocs.io/en/latest/lowlevel.html
- tutorial https://bitbucket.org/wlav/cppyy/src/master/doc/tutorial/
- PYPI https://pypi.org/project/cppyy/
2.3 関係ソフト
- CERN ROOT https://root.cern/
- PyPy https://www.pypy.org/
2.4 類似ソフト
3 インストールと、基本的使い方
3.1 以下の操作を行っている動画
3.2 ローカルにインストールする手順
- Ubuntuじゃなければpip3のかわりにpipを利用して pip install cppyy でローカルにインストール可能
- 必要なパッケージ、ツールがあると思われる
- ipythonか、Jupyter Notebookをいれとくと、試しやすいし、プログラムする時に便利(私は軽いIpythonをいれてます)
pip3 install cppyy
3.3 テスト
import cppyy # include cppyy.include("string") # std::vector 利用 v=cppyy.gbl.std.vector['std::string']() v.push_back("hello") # vのタイプ表示 print(type(v)) # std::vectorの要素表示 print(v.size()) print(v[0]) # 独自関数定義 cppyy.cppdef('void myprint(std::string s) {std::cout << s << std::endl;};') # 独自関数利用 cppyy.gbl.myprint(v[0]) cppyy.gbl.myprint(cppyy.gbl.std.string("World")) cppyy.gbl.myprint("World") # lowlevel ライブラリ import cppyy.ll
3.4 この章のまとめ
- 基本的な使い方の説明を行った
- include
- std::vectorの利用
- std::stringの利用
- 独自関数の定義と利用
- タイプの表示
- クラスの利用
4 外部ライブラリの利用
4.1 以下の操作を行っている動画
4.2 外部ライブラリの利用手順
4.2.1 自作のライブラリ作成
- 以下の内容でmyadd.hpp作成
#ifndef MYADD_HPP #define MYADD_HPP class MyCalc{ public: int myadd(int a,int b); int mysub(int a,int b); }; #endif
- 以下の内容でmyadd.cpp作成
#include "myadd.hpp" int MyCalc::myadd(int a, int b){ return a+b; } int MyCalc::mysub(int a, int b){ return a-b; }
- 以下のコマンドでライブラリファイル作成
clang++ --shared -fPIC myadd.cpp -o libmyadd.so
4.2.2 cppyyを利用して、Pythonで自作C++ライブラリの利用
import cppyy cppyy.include("myadd.hpp") cppyy.load_library("./libmyadd.so") mc=cppyy.gbl.MyCalc() print(mc.myadd(1,2)) print(mc.mysub(1,2))
4.3 この章のまとめ
- 自作C++ライブラリを作成し、それをPythonでcppyyライブラリを利用して使ってみた
- 外部ライブラリも同じ手順でcppyyで利用可能
- cppyyを利用することで、色々なCやC++の豊富なライブラリを簡単にPythonで利用できるようになった
5 今後
- 今後も文書追加していきます。
6 この文書のチェンジログ
- 2020/09/02 初版
Created: 2020-09-02 水 19:48