5

状況は次のとおりです。

Python は iOS アプリ (libpython2.7.a) に埋め込まれています。すべてのロジックは Python によって記述されています。一部の API は、swig ラップを介して呼び出すことができます。Python がpy(c,o)の場合、すべて問題ありませんが、遅すぎます。速度を上げたいと考えています。 .so よりも .c ソースに cython compile を使用するよりも、負荷がかかるように見えますが、

「__ファイル__」定義が見つかりません

コールスタックは次のとおりです。

[CGPLoad.py] load from file error [Error Message:

exceptions.NameError:name '__ file __' is not defined

Traceback:

init CGPLoad (build/CGPLoad.c:3054): CGPLoad.py(# 19)

init LogInOutShell (build/LogInOutShell.c:3089): LogInOutShell.py(# 20)

init CommonToolShell (build/CommonToolShell.c:6560): CommonToolShell.py(# 19)

init GameWorld (build/GameWorld.c:2516): GameWorld.py(# 19)

init IPY_GAMEWORLD (build/IPY_GAMEWORLD.c:27700): IPY_GAMEWORLD.py(# 28)

IPY_GAMEWORLD.swig_import_helper (build/IPY_GAMEWORLD.c:4304): IPY_GAMEWORLD.py(# 18)

]

Pythonソースは次のとおりです。

fp, pathname, description = imp.find_module('_IPY_GAMEWORLD', [dirname(__ file __)])

何が問題なのですか、どうすれば修正できますか?

4

2 に答える 2

1

Cython モジュールでパッケージのルート パスを取得する必要があるだけで__file__、Python のバグhttp://bugs.python.org/issue13429のために定義されていない場合は、以下を参照して簡単なトリックを使用できます__init__.py

def get_package_root():
    from . import __file__ as initpy_file_path
    return os.path.dirname(init‌​py_file_path)
于 2016-08-16T13:04:19.577 に答える