在python中我可以用什么方法代替__file__?

NrN*_*ifi 17 python cython

我通过cython将我的python代码转换为c,然后编译.c文件并在我的项目中使用.so.我的问题:我__file__在我的python代码中使用,在使用gcc进行编译时,它不会出错.但是当我在其他python文件中运行程序并导入.so时,从__file__行显示错误.

怎么能解决这个问题?有什么方法可以替换__file__吗?

Yoa*_*ann 12

尝试在文件的开头添加:

import inspect
import sys
if not hasattr(sys.modules[__name__], '__file__'):
    __file__ = inspect.getfile(inspect.currentframe())
Run Code Online (Sandbox Code Playgroud)

  • 如果您只需要在Cython模块中获取包根路径,但由于Python错误http://bugs.python.org/issue13429未定义`__file__`,那么您可以通过引用`__init__来使用一个简单的技巧. py`:`def get_package_root():from.import __file__ as initpy_file_path; return os.path.dirname(initpy_file_path)` (8认同)
  • 这仅适用于Python代码堆栈帧,**不适用于C扩展. (4认同)