python ‘__file__’ no está definido

la situacion es

Python está incrustado en la aplicación ios (libpython2.7.a), toda la lógica está escrita por python, algunos api son compatibles con swig wrap, si el python es py (c, o) todo está bien pero muy lento , quiero acelerar Hasta que uso cython compile a .c source que .so, parece que está cargado pero

no se puede encontrar “__ archivo __” definir

Aquí está la stack de llamadas:

[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) ] 

La fuente de python es:

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

¿Cuál es el problema, cómo solucionarlo?

Es el comportamiento previsto, ya que __file__ no está definido para el ejecutable comstackdo. Usted debe comprobar ese caso con

 getattr(sys, 'frozen', False) 

y actuar en consecuencia, por ejemplo:

 if getattr(sys, 'frozen', False): __file__ = os.path.dirname(sys.executable) 

Si solo necesita obtener una ruta raíz del paquete en el módulo Cython, pero __file__ no está definido debido al error de Python http://bugs.python.org/issue13429 , entonces puede usar un simple truco haciendo referencia a __init__.py :

 def get_package_root(): from . import __file__ as initpy_file_path return os.path.dirname(init‌​py_file_path)