我通過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