2017-09-30 1 views
0
​​

ここは私がやっていることです。 私はcythonを使って最適化しようとしているファイルmodel.pyを持っています。このファイルのコピーを作成し、そのコピーの名前をmodel.pyxに変更しました。私はこの新しいpyxファイルにたくさんのインポートを追加しました。属性エラーのためにcythonでロギングモジュールをインポートできない

import pyximport 
pyximport.install(pyimport=True) 

import cython 
cimport cython 

import numpy as np 
cimport numpy as np 

import logging 
import time 

DTYPE = np.float64 
ctypedef np.float64_t DTYPE_t 
... 

今、私は私にmodel.soを与える標準setup.py方法を使用しての.soファイルにこれをコンパイルします。新しいファイルが多少このようになります。

File "/usr/local/lib/python2.7/dist-packages/pyximport/pyximport.py", line 419, in load_module 
    return load_module(fullname, source_path, so_path=so_path, is_package=is_package) 
    File "/usr/local/lib/python2.7/dist-packages/pyximport/pyximport.py", line 233, in load_module 
    exec("raise exc, None, tb", {'exc': exc, 'tb': tb}) 
    File "/usr/local/lib/python2.7/dist-packages/pyximport/pyximport.py", line 216, in load_module 
    mod = imp.load_dynamic(name, so_path) 
    File "__init__.py", line 77, in init logging.__init__ 
ImportError: Building module logging failed: ["AttributeError: 'NoneType' object has no attribute 'co_filename'\n"] 

私は私が間違っているつもりですどこか分からない。私は新しいPythonスクリプトでこのモデルを使用しようとすると、今では私に、次のエラーが発生します。私はGoogleで多くを検索したが、誰かが同じまたは同様のエラーに直面しているのを見つけることができなかった。どんな助けにも感謝!

+0

'model.py'ファイルと' model.pyx'ファイルが同じディレクトリにあると問題が発生します。ディレクトリから 'model.py'の名前を変更するか削除します。また、' .pyx'ファイルにpyximportを使用しないでください。 pyximportは、cythonモジュールをインポートするPythonファイルで行われます。とにかく 'setup.py'ファイルを使うことをお勧めします。 –

+0

こんにちは、私の質問でこれを言い忘れました。フォルダ内の 'model.py'を' model_org.py'に変更しました。しかし、cythonファイルから 'pyximport'を削除すると、何とかエラーが修正されました。ありがとう! –

答えて

0

.pyxファイルにpyximportを使用しないでください。 pyximportは、cythonモジュールをインポートするPythonファイルで使用されます。documentation of Cythonを参照してください。

関連する問題