1. ホーム
  2. python

[Python スクリプトエラー] AttributeError:'module' has no attribute 'xxx' solution

2022-02-21 20:54:17
<パス

最近、Pythonスクリプトを書く際に奇妙な問題に遭遇しました。Pythonスクリプトは正常なのに、実行時にエラー "AttributeError: 'module' object has no attribute 'xxx'" が報告され、これは実は.pycファイルに問題があることがわかりました。

  • 問題発生箇所です。インポートライブラリのソースファイルを確認すると、ソースファイルは存在し、エラーもなく、ソースファイルの.pycファイルも存在することがわかりました。
  • 解決方法 ライブラリの.pycファイルを削除して、再度コードを実行するか、コードを実行できる環境を探して、現在のマシンの.pycファイルをコピーして置き換えるかしてください。

添付ファイル pycファイル入門。
pycファイルとは、pythonでコンパイルされたバイトコードファイルです。pyファイルを実行するとすぐに、pythonコンパイラは対応するpycバイトコードファイルを自動的に生成します。このpycバイトコードファイルは、pythonインタプリタの後に、実行するマシンコードを生成します(これがpycファイルをクロスプラットフォームでデプロイできる理由です。javaのクロスプラットフォーム、javaでJVMが実行するバイトコードファイルと同様です)。次の呼び出しは、pyファイルを呼び出すことなく、直接pycを呼び出します。このpyファイルに変更があるまで、pythonインタプリタはpycファイルの生成時刻をチェックし、pyファイルの修正時刻を比較し、pyが更新されていれば、新しいpycを生成するのです。
参考リンク https://blog.csdn.net/cn_wk/article/details/50839159

私が遭遇したエラーは、次のように報告されました。

File "/home/anirrudh/.virtualenvs/ml4t2/local/lib/python2.7/site-packages/numpy/ma/core.py", line 30, in <module> 

import numpy.core.umath as umath
AttributeError: 'module' object has no attribute 'core'
上記の一般的な解決策では私のエラーは解決せず、最終的に大きな間違いを犯したことがわかりました。つまり、新しいパイソンファイルの名前が組み込み関数名と衝突しており、パイソンファイルの名前を変更することでエラーなく正常に実行されるようになりました。