PyCharmの未解決の参照問題


373

ディレクトリ構造があります

├── simulate.py
├── src
   ├── networkAlgorithm.py
   ├── ...

また、でネットワークモジュールにアクセスできますsys.path.insert()

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

ただし、pycharmはモジュールにアクセスできないと不平を言います。参照を解決するようにpychamを教えるにはどうすればよいですか?

ここに画像の説明を入力してください


4
srcフォルダーに__init__.pyファイルはありますか?
Puffin GDI

@Puffin GDI:いいえ、ありません。
プロシーク2014年

5
@PuffinGDI srcフォルダーにはこのinit .pyファイルが必要ですか?
ジャックチー2016年

はい、パッケージを識別するためのpythonためには:stackoverflow.com/questions/42094723/...
rnoodle

クラス名を変更して作業を続けました。実行すると、このエラーが発生し、名前の変更を完全に忘れて、インポート中にpycharmの候補を探しました。くそー、提案は大文字と小文字が区別されます!-Pythonの新機能!!
Vignesh Paramasivam

回答:


817

手作業で行ったように手動で追加すること確かにこれを行う1つの方法ですが、より簡単な方法があります。それは、単純にpycharmにsrcフォルダーをソースルートとして追加することを伝え、ソースルートをpythonに追加することです。道。

これにより、インタプリタの設定にハードコーディングする必要がなくなります。

  • srcソースコンテンツルートとして追加:

                            ここに画像の説明を入力してください

  • 次に、必ずソースを追加してくださいPYTHONPATH

ここに画像の説明を入力してください

  • これでインポートが解決されます:

                      ここに画像の説明を入力してください

このようにして、ソースルートとして必要なものを何でも追加でき、物事は単純に機能します。あなたはしかし、ソースルートとしてマークされていない場合、あなたはなりエラーが表示されます。

                                  ここに画像の説明を入力してください

結局、これは再起動することを忘れないでください。PyCharmメニューで次を選択します:ファイル->キャッシュの無効化/再起動


17
これは、IntelliJでPythonプラグインを使用している場合にも機能します。
rob mayoff 2014

13
このソリューションは機能します。問題は、別のプログラマーがsvnからコードを取得するときに、「未解決の参照」エラープロンプトを取り除くために同じ設定を再度行う必要があることです。
Ben Lin、

2
@GamesBrainiac、解決策は、IDEが「sys.path.insert(0、 "./src")」を解析して、この特定のファイルのPYTHONPATHに追加し、適切な構文分析を行うことです。
Ben Lin

2
また、コンテンツのルートパスが正しいことを確認する必要もあります。pycharm 5では、これは[設定]-> [プロジェクト]-> [プロジェクト構造]にあります。
lps 2015年

1
奇妙なことに、サブディレクトリは考慮されていません。たとえば、の下にsrc、私が持っているviewsフォルダーがあるmyview.py場合、試しても未解決の参照エラーが表示されますfrom src.views.myview import <my_function>...
SexyBeast

49
  1. フォルダ内の__init__.pyファイルを確認するsrc
  2. srcフォルダーをソースルートとして追加する
  3. 次に、必ずソースを追加してくださいPYTHONPATH(上記を参照)
  4. PyCharmメニューで次を選択します:ファイル->キャッシュの無効化/再起動

11
この最後のステップは、私のソリューションで欠けている唯一のものでした。受け入れられた答えはこれをそれに追加するかもしれません。
aimbire 2017年

ここで言及されている最後のステップがないと、受け入れられた答えは機能しません。承認された回答はこのステップも追加する必要があります/
santhosh kumar

23

誰かがまだこれを見ている場合、私が試したとき、受け入れられた答えはPyCharm 2016.3でも機能します。UIが変更されている可能性がありますが、オプションは同じです。

すなわち。ルートフォルダーを右クリック-> 'Mark Directory As'-> Source Root


1
このディスカッションには、非常に多くの複雑な答えがあります。ここに提示された解決策は私にとってとても簡単に機能しました。

16

すべての回避策をテストした後、Settings -> Project -> project dependenciesそれらを確認して再配置することをお勧めします。

pycharm prefrence


これは完璧に機能します。私はpygameそこにインストールしましたが、未解決の参照問題はありません!
Michal Przybylowicz


5

一般に、これはパッケージが不足している問題です。キャレットを未解決の参照に置き、を押しAlt+Enterてオプションを表示します。解決方法を知っておく必要があります。


4

受け入れられた回答をフォローした後、以下を実行することで解決しました:

FileSettingsProject <your directory/project>Project Dependencies

未解決のインポートがあるファイルが存在するディレクトリ/プロジェクトを選択し、チェックボックスをオンにして、そのプロジェクトが他のプロジェクトに依存していることをPycharmに伝えます。

私のフォルダ階層は、質問の階層とは少し異なります。鉱山はこんな感じ

├── MyDirectory  
     └── simulate.py  
├── src  
     ├── networkAlgorithm.py  
     ├── ...

srcが依存することをPycharmに伝えるとMyDirectory、問題は解決しました!


4

すべての答えは本当に役に立ちますが、明確に説明する必要がある小さな情報が1つあります。

  • 基本的に、複数の階層ディレクトリを持つプロジェクトは、いくつかの属性を持つパッケージとして機能します。
  • ローカルで作成されたカスタムクラスをインポートするには、.pyファイルを含むディレクトリに移動し、__init__.pyそこに(空の)ファイルを作成する必要があります。

これが役立つのは、Pythonがディレクトリをパッケージを含むものとして処理するためにこのファイルが必要になるためです。乾杯!


3

PyCharm経由でインストールします(Community Editionで動作します)。開いてSettings > Project > Project Interpreter、下のスクリーンショットの緑色の+アイコンをクリックします。開いた2番目のダイアログで、パッケージ名を入力し、[パッケージのインストール]ボタンをクリックします。

ここに画像の説明を入力してください


2

プラグインがインストールされていないことがよくあります。例えば

djangoプロジェクトを開発していて、pyCharmにdjangoプラグインがインストールされていない場合、エラー「未解決の参照」が表示されます。参照:https : //www.jetbrains.com/pycharm/help/resolving-references.html


これと受け入れられた答えを組み合わせる必要がありました(stackoverflow.com/a/21241988/6448384)。
Karuhanga

1

想定している正しいインタープリターを使用しているか確認してください。これを解決するために「未解決のリファレンス 'django'」というエラーが発生しました。プロジェクト設定からプロジェクトインタープリター(Python 3をPython 2.7に変更)を変更しました:プロジェクトを選択し、ファイル->設定->プロジェクト:->プロジェクトインタープリター->参照正しいバージョンまたはインタープリターを選択します(例:/usr/bin/python2.7)。


1

私の場合の問題はVirtual environment、グローバルサイトパッケージにアクセスできないものを使用していたことです。したがって、インタプリタは新しくインストールされたパッケージを認識していませんでした。

この問題を解決するには、仮想インタープリターを編集または再作成して、Inherit global site-packagesオプションにチェックマークを付けます。

ここに画像の説明を入力してください


これは望ましくない結果をもたらし、仮想環境を使用する1つの理由を打ち負かしていませんか?つまり、その環境をどこかに持っていて、それらのグローバルサイトパッケージがインストールされていると、問題が発生します。私もそう思っていました。
theStud54


0

PyCharm 2019.3.1で完了 srcフォルダーを右クリック-> [Mark Directory as]-> [Excluded]をクリックすると、srcフォルダーが青色になります。


-1

Pycharmはvenvを使用します。venvのコンソールで、パッケージを明示的にインストールするか、に移動する必要がありますsettings -> project interpreter -> add interpreter -> inherit global site-packages


-1

pycharmの新しいバージョンでは、ファイルをインポートするディレクトリまたはpythonパッケージを右クリックし、[Mark Directory As]-> [Sources Root]をクリックするだけで実行できます。


-1

これを修正する最も簡単な方法は、pyCharmソフトウェアで以下を実行することです。

クリック:ファイル>設定>(プロジェクト:プロジェクト名)>プロジェクトインタープリター>

次に、右側の「+」アイコンをクリックして、必要なパッケージを検索してインストールします。

コーディングをお楽しみください!!!


1
Stack Overflowへようこそ。回答ありがとうございます。これは正しいかもしれませんが、将来的には、コンテキストや詳細なしに画像や他のサイトへのリンクを投稿しないでください。リンクが機能しなくなることがあり、他のユーザーにとってこの回答の有用性が低下します。
Cyber​​Jacob

@Cyber​​Jacobどうもありがとうございました。アドバイスをありがとうございました。画像を削除し、代わりにテキストを追加して、回答を編集しました。
zaid.mohammed
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.