Lua から Python 関数を呼出す?

2016-05-18 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、1、 0、0、0、0、0(40)で、換算ポイント 88pt 。
「Perl」「C言語」「化学業界」「FM COCOLO」「グルコサミン」「Python」、
「Firefox」bg値変動のみ。「硝子業界」「e-radio」「FM青森」全く変化無し。
・-・ - -・

さて、本文。

2年前(2014-06-25)の記事「言語使用経験
で書いている。
  ・・・・・
  ・・・・・
  1.Python
  ブログ内検索では、
  「Python
  130件弱ある。
  最初の、5年前(2009-03-22)の記事:
  「Python って、なに?
  は、使用経験には入らない。
  33番目(2014-02-19)の記事:
  「PyCharm 導入
  からでしょうか。
  今年(2014:H26)2月中旬から使い始めた。
  先月(2014-05-13)の記事:
  「WinPython:32ビット版に乗り換え
  の如く、現状は“WinPython 2.7 32bit”で、IDEは“Spyder”ですね。
  cf.「WinPython
  ・・・・・
  ・・・・・
丸2年経過している。

主なパッケージ/モジュールは、
「Numpy」「SciPy」「Matplotlib」「Pillow」「Tkinter」
そして、絶対追加すべき「OpenCV」
cf.「OpenCV:WinPython には入って無い

これに対して、「Lua」は、
今年初め(2016-01-02)の記事「プログラミング言語 Lua」に始まり、
2月初め(2016-02-01)の記事「Lua 学習:The GSL Shell Project」から、
ベース言語仕様は“Lua”で、処理系は“LuaJIT”。
更に、機能拡張した“GSL Shell”。

上記“Python”と比較すると、
「Numpy」「Pillow」「Tkinter」「OpenCV」は、対抗出来る。
でも、
「SciPy」「Matplotlib」に、全面対決出来るものは
<紙>には、未だ見つかっていない。

そこで、
何とかして“GSL Shell”から“Python”関数を呼べないか???


それには、やはり 間に C を咬ませるのかナ?


Lua からは、“LLVM/Clang(MinGW)”、“borland bcc32”、
Microsoft Visual C++”のいずれで作ったものでも呼び出せる。

しかし、<紙>の経験では、
「LLVM/Clang(MinGW)」や「borland bcc32」で作ったものから、
Python を呼び出せなかった。
Microsoft Visual C++ で作ると、
どうか、・・・・・


「とある社員のチラシ裏」ブログの
C/C++ に Pyhton を 組み込み パート1 …
にあるコード。

“call_function.c”と、それが呼び出す“py_function.py”
エラーチェック無しで、
// call_function.c
#include
int main( int argc, char *argv[] ){
PyObject *pName, *pModule, *pDict, *pFunc, *pValue;
if( argc < 3 ){
printf( "Usage: exe_name python_source function_name\n" );
return 1;
}
Py_Initialize(); // Initialize the Python Interpreter
pName = PyString_FromString(argv[1]); // Build the name object
pModule = PyImport_Import(pName); // Load the module object
pDict = PyModule_GetDict(pModule); // pDict is a borrowed reference
pFunc = PyDict_GetItemString(pDict, argv[2]); // pFunc is also a borrowed reference
if( PyCallable_Check(pFunc) ){
PyObject_CallObject( pFunc, NULL );
}else{
PyErr_Print();
}
Py_DECREF(pModule); // Clean up
Py_DECREF(pName);
Py_Finalize(); // Finish the Python Interpreter
return 0;
}
このソースを、
バッチ処理コマンド:cl call_function.c User32.lib
でコンパイル&リンクして「call_function.exe」を作る。
当然ですが、include パス等々は設定が必要。

それから、
'''py_function.py'''
'''demonstrate the use of python embedding'''
def multiply():
c = 12345*6789
print 'The result of 12345 x 6789 :', c
return c
を作る。

そうすると、
コマンド実行: call_function py_function multiply
で、
結果表示された。


これから、頑張って学習しよう!


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160410
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク