ImportError: No module named XXX

2513 ワード

この問題はpythonの学習と使用中に最もよく見られるファイルかもしれません.pythonは機能が複雑で、いろいろなパッケージを提供しています.これらのパッケージを使用するときはもちろんダウンロードする必要があります.
では、ImportErrorが現れると、いくつかの方法で一つ一つ調べることができます.         
  • ターゲットパッケージまたはモジュールがダウンロードされたかどうかは、ターゲットモジュールがnumpyであると仮定します.ターミナルモードでは、numpyをローカルにインストールする情報(名前、バージョン、インストール場所、作成者、ホームページなど)$pip show numpy注意:pip showはインストール済みのパッケージしか表示できませんが、インストールされていない場合は情報がありません.ターゲットモジュールがインストールされていない場合は、インストールします!
  • ターゲットモジュールはインストールされていますが、まだImportErrorの場合はpython path環境の欠落によるものです.importモジュールの場合、sysは1つずつ検索されます.path変数の各ディレクトリは、検索されるまで、検索されない場合はImportErrorとみなされます.例えばpip show numpyを介して得るnumpyのインストール経路は、/usr/local/lib/python 2である.7/dist-packages、path環境を追加:
    import sys
    
    sys.path.append("/usr/local/lib/python2.7/dist-packages")
    注意:ルートディレクトリ"/"をpath環境に追加するのは当然ではありません.importはサブディレクトリを検索しません.そうしないと、次のようなフォーマットはありません.
    from django.core.wsgi import get_wsgi_application
    fromの後ろの列は、実際にターゲットモジュールのディレクトリ階層構造を指定しています.換算すると、「/usr/local/lib/python 2.7/dist-packages/django/core/wsgi」です.wsgiがディレクトリなのかpythonファイルなのかは、具体的な状況を見てください.どうしてそうするの?このような疑問があるのは、名前をつけるのが難しいことを知らないのだろうか.溝を吐いて、冗談を言って、名前をつけるのが難しいのは一部の原因で、もう一つの原因は機能の私有化のためで、例えば会社には2人とも明ちゃんと呼んで、突然「明ちゃん」と叫んで、誰があなたが呼んでいるのか知っていて、誰があなたを相手にしますか.しかし、「企画部のxxxプロジェクトの明ちゃん」と叫ぶと、唯一性があり、より多くの修飾を加えることができます. 
  • ターゲットモジュールがインストールされ、path環境の追加が完了したが、依然としてImportErrorはsysと考えている場合がある.pathが追加されて完成すれば万事順調だ.決してこのような幸運を抱いてはいけない.著者はこのような心理のために半日も時間を浪費した.その时、作者は全体的に愚かで、玄学のバグに出会ったと思って、本当に自慢したいと思っていましたが、冗談を引き起こすのが怖いです.背景はこのようにして、djangoを使ってdemo級のwebを構築して、バックグラウンドpythonは単独で走って、大丈夫で、djangoはserverを起動して、webを通じてバックグラウンドインタフェースを呼び出しても問題ありません.完璧なリズムで、いつもdjangoを走っているわけにはいかないので、nginxとuwsgiでサーバーに配置して、一歩一歩調整したいのですが、webがインタフェースを呼び出すと、バックグラウンドはいつも「ImportError:No module named google.protobuf.internal」と間違っています.わざわざimportの前にsysを印刷しました.パス、大丈夫です.では、問題が来ました.どうして見つからないのですか.python大牛は一目で問題の所在がわかるかもしれないが、仕方なく私はまだ新しい.python 2に気づくまで7,突然1つの深刻な问题を思い付きました.python2.7非常に気持ち悪い設定があり、ターゲットモジュールが存在するディレクトリには__が必要です.init__.pyファイル、空のファイルでも対応モジュールはimportできません.調べてみると、protobufとinternalディレクトリの下にこのファイルがありますが、googleディレクトリの下にはありません.作成して、もう一度試して、実行に成功しました!!!くだらないことが多いから、まとめて、python 2.7必要_init__.py側はimport対応モジュールを許可するので、パッケージまたはモジュールがインストールされていることを発見し、path環境も追加完了しているが、依然としてImportErrorである場合は、ターゲットモジュールの下に__が存在するかどうかを確認します.init__.pyでしょう. 

  • では問題が来て、もし本当に__のためならばinit__.pyファイルが欠落している場合、なぜpython xxxを通過するのか.pyは間違いを報告しないで、djangoを通じても問題がなくて、あいにくuwsgiを通じてそこで間違いを報告しますか?pythonとdjangoに追加の動作があるのか、それとも他に何があるのか.わかりませんが、知っているエビがいたら教えてください!?先にお届けします!!!