AttributeErrorの理由は何ですか:' module'オブジェクトには属性' check\_output'がありません。Pythonでは?


ベストアンサー

コードがないと、明確な答えを見つけるのは困難ですが、問題は、インポートしているコードが次のようなものだと思います:

fluffというモジュールがあり、そのモジュール内にクラスがありますfluffクラスにはfluff;というメソッドがあります。check\_output

コードは次のようになります:

import fluff

cfg = fluff.check\_output(stuff) # You want the fluff class here

問題は、そのすべてがimport fluffは、綿毛モジュールをインポートします。必要な綿毛クラスは実際にはfluff.fluff.

2つの解決策があります:

1:

import fluff

cfg = fluff.fluff.check\_output(stuff) # You want the fluff class here

2:

from fluff import fluff # this imports the fluff class.

cfg = fluff.check\_output(stuff) # You want the fluff class here

これが、命名規則が非常に重要である理由の1つです。クラスはPEP8の命名規則に従い、コードは次のようになります。

from fluff import Fluff # this imports the fluff class.

cfg = Fluff.check\_output(stuff) # You want the fluff class here

その大文字の「F」はエラーを防ぐのに十分かもしれません-または少なくとも潜在的な問題への手がかりになります

-——

他の潜在的な答えは、インポートしているモジュールが別のファイルによってシャドウされています(言い換えると、Pythonがインポートするものを検索する前に見つけた同じ名前のファイルがあります)。初心者でこれが発生する最も一般的な原因は、インポートしようとしているモジュールと同じようにスクリプトに名前を付ける場合です。 「foo.py」というスクリプトがあり、「import foo」を実行する場合、Pythonは常に現在のディレクトリファイルを検索するため、そのインポートでは「foo.py」という名前のスクリプトがインポートされます。おそらく必要なものではありません。

この問題を診断する最善の方法は、同じディレクトリでインタラクティブコンソールを開き、次のように入力することです。

>>> import

>>> .\_\_file\_\_

ここで、はインポートしようとしているモジュールの名前です。 2行目のコマンドの出力は、Pythonがインポートしようとしたファイルのパスになり、ファイルがどこにあるべきかを確認できます。

回答

見ずにあなたのコードでは、それは私が考えることができる2つの問題の1つである可能性があります(ただし、これら2つに限定されません)。

  1. モジュールが正しくインストールされていません。モジュールのsite-packagesフォルダーを確認してください。そこにある場合は、問題がない可能性があります。 2、つまり:
  2. 適切なバージョンのPythonで実行されていません。つまり、Python2用のモジュールをインストールしていますが、Python3インポートで呼び出しています。 pipを使用してモジュールをアンインストールしてから、pip3で再インストールして適切なバージョンを取得してください。理由はわかりませんが、Raspberry Pi Zero W v1.1のような一部のマシンでは、pipコマンドがデフォルトで3ではなくPython2に設定されています。python3<通常のpythonの代わりに/ div>コマンド。

モジュールソースをコピーするという一時的な「ダーティ」ソリューションを提案できます。作業ディレクトリ。つまり、「モジュール」フォルダを取得して、実行しているソースファイルと同じフォルダに配置します。また、gitリポジトリのクローンを作成したか、同じ名前の別のフォルダにある別のフォルダ内にmodule.pyファイルがある.zipフォルダから抽出した可能性もあります。この場合、次のように、モジュールをすぐにインポートするのではなく、module.moduleをモジュールとしてインポートすると役立つ場合があります。

import module.module as module

わりに

import module

コード内の変更量を減らします。頑張ってください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です