名前/パスに unicode (widechar) を含むファイルに対して PyRun_SimpleFile を動作させることができませんでした (FILE* 互換性の問題)。
そこで、自分で Python スクリプトを開き、PyRun_SimpleString を使用して各行を実行することにしました。
ここに示されている疑似コード。
wchar_t* pWScriptName=NULL;
// pWScriptName malloced & populated here
FILE* fp = _wfopen(pWScriptName, L"r");
while (fgets(line, BUFSIZ, fp) != NULL) {
int ret = PyRun_SimpleString(line);
if(ret != 0) {
... error at lineNum ...
}
lineNum++;
}
上記では、以下の def ステートメントでエラーが発生します (<-- 以下に表示)
Python のバージョンは 2.7 です
import os
print "hello"
def foo(): # <-- PyRun_SimpleString fails here
print "hello again"
これを使用して、if/it が失敗したスクリプトの行番号を表示したいと思います。他の多くの人が PyRun_SimpleString で成功しているようです!
前もって感謝します。