我通过cython将我的python代码转换为c,之后编译.c文件并在我的项目中使用.so。 我的问题: 我在我的python代码中使用__file__
,而在通过gcc编译时,它不会收到错误。但是当我运行程序并在其他python文件中导入.so时,从__file__
行出现错误。我可以用什么方法代替python中的__file__?
如何解决这个问题?有没有什么方法可以替代__file__
?
我通过cython将我的python代码转换为c,之后编译.c文件并在我的项目中使用.so。 我的问题: 我在我的python代码中使用__file__
,而在通过gcc编译时,它不会收到错误。但是当我运行程序并在其他python文件中导入.so时,从__file__
行出现错误。我可以用什么方法代替python中的__file__?
如何解决这个问题?有没有什么方法可以替代__file__
?
尝试在你的文件的开头补充一点:
import inspect
if not hasattr(sys.modules[__name__], '__file__'):
__file__ = inspect.getfile(inspect.currentframe())
只适用于Python代码栈帧,**不适用于C扩展。 –
如果您只需要在Cython模块中获取包根路径,但由于Python bug http://bugs.python.org/issue13429没有定义'__file__',那么您可以通过引用'__init__来使用简单的技巧.py':'def get_package_root():from。将__file__导入为initpy_file_path;返回os.path.dirname(initpy_file_path)' –
@MartijnPieters你对C扩展的建议是什么? – denfromufa
不太清楚你将如何让蟒蛇兼容,但GCC #define
小号__FILE__
的代码是在文件的名称
你用它做什么? – poke