2013-10-07 5 views
14

私は自分のpythonコードをcythonでcに変換し、その後に.cファイルをコンパイルし、私のプロジェクトで.soを使用します。 私の問題: 私はPythonコードで__file__を使用していますが、gccでコンパイルしている間はエラーにはなりません。しかし、他のpythonファイルでprogramとimport .soを実行すると、__file__行のエラーが表示されます。Pythonで__file__の代わりにどのような方法を使用できますか?

どのようにこの問題を解決できますか? __file__に置き換える方法はありますか?

+1

何のために使用しますか? – poke

答えて

9

ファイルの先頭にこれを追加しよう:あなたは、それはコードがであることを互換性が、gccの#define__FILE__ファイルの名前のためにPythonのようになりますか

import inspect 
if not hasattr(sys.modules[__name__], '__file__'): 
    __file__ = inspect.getfile(inspect.currentframe()) 
+3

これはPythonコードスタックフレームでのみ機能します** ** C拡張ではありません**。 –

+3

Cythonモジュールでパッケージのルートパスを取得するだけで、Pythonバグhttp://bugs.python.org/issue13429のために '__file__'が定義されていない場合は、' __init__ .py': 'def get_package_root():from。 initpy_file_pathとして__file__をインポートします。 return os.path.dirname(initpy_file_path) ' –

+0

@MartijnPieters Cの拡張機能に関するあなたの提案は何ですか? – denfromufa

0

すぎてわからない

関連する問題