web-dev-qa-db-ja.com

PyCharmは有効なコードに対して未解決の参照エラーを表示します

私はPyCharmを使ってプロジェクトを進めています。プロジェクトが開かれ、インタプリタで構成されており、正常に実行できます。リモートインタプリタパスは正しくマッピングされています。これは正しい設定のようですが、PyCharmは私の有効なコードを "未解決の参照"エラーで強調しています。たとえビルトインのPython関数でもそうです。コードが実行されても、なぜこれらが検出されないようですか? PyCharmにこれらを正しく認識させる方法はありますか?


この問題の具体的な例はリモートインタプリタにありますが、問題はローカルインタプリタにもあります。

250
James McCalden

ファイル|キャッシュを無効にする...そしてPyCharmを再起動すると効果的です。

379
Dmitry Trofimov

ドミトリーの返事は私にはうまくいかなかった。

私は、プロジェクトインタプリタに行き、「パス」タブを選択し、そしてそのサブメニューのリフレッシュボタンを押すことによって私の仕事を得ました。それは "python-skeletons"と呼ばれるもので自動生成されました。

編集:PyCharm 3.4.1を使ったスクリーンショット(かなり隠れています)

enter image description here

121
kelorek

これには多くの解決策があり、他のものよりも便利なものもありますが、必ずしもうまくいくとは限りません。

「クイック」から「イライラする」まで、試すことができるすべてがここにあります。

  • File - > Invalidate Caches / Restartを実行してPyCharmを再起動してください。
    • 念のために、以下の方法のいずれかの後にこれを行うこともできます。
  • まず、実行しているインタプリタを確認します。Run - > Edit Configurations - > Configuration - > Python Interpreter
  • 通訳者のパスを更新します。
    • File - > Settings
    • Project: [name] - > Project Interpreter - > 'Project Interpreter':歯車のアイコン - > More...
    • [パスを表示]ボタン(一番下のボタン)をクリックします
    • [更新]ボタン(一番下)をクリックします
  • インタプリタを削除して、もう一度追加してください。
    • File - > Settings
    • Project: [name] - > Project Interpreter - > 'Project Interpreter':歯車のアイコン - > More...
    • 「削除」ボタンをクリック
    • [追加]ボタンをクリックして、インタペーターを再追加してください。
  • プロジェクト設定を削除します。
    • プロジェクトの.ideaフォルダを削除します
    • PyCharmを閉じて再度開く
    • プロジェクトを一から開く
  • PyCharmのユーザー設定を削除します(ただし、最初にそれらをバックアップします)。
    • Macの場合は~/.PyCharm50
    • Windowsでは%homepath%/.PyCharm50
  • 別の通訳に切り替えてから、もう一度目的の通訳に戻ります。
  • 新しい仮想環境を作成し、その環境のインタプリタに切り替えます。
  • 完全に別の通訳に切り替えます。元に戻らないでください。
53
florisla

キャッシュの無効化またはパスの更新が機能しない場合、この問題を解決するためにリモートインタプリタを削除して再度追加することにしました。

私は私のmulti-vm設定に新しいVMを追加するとvagrantを時々刻々使用します、転送されたポートは変更します、そしてこれはSSH用に間違ったポートを使おうとするとPyCharmを混乱させるようです。ポートを変更しても、壊れた参照が助けになるとは思われません。

11
Thomas Farvour

私の場合、それはディレクトリ構造でした。私のプロジェクトはこんな感じです:

+---dir_A
    +---dir_B
        +app
        |
        \-run.py

だからdir_bを右クリックして "ディレクトリを"> "プロジェクトルート"としてマークする

11
Shoham

以下の手順に従ってPyCharm 4.0.6(OSX 10.10.3)でテストしました。

  1. PyCharmメニューをクリックしてください。
  2. プロジェクトインタプリタを選択します。
  3. 歯車アイコンを選択します。
  4. 詳細ボタンをクリックします。
  5. あなたがいるプロジェクトインタプリタを選択してください。
  6. [ディレクトリツリー]ボタンをクリックします。
  7. パスのリストを再読み込みを選択します。

問題が解決しました!

10
siripan

他の解決策がどれもうまくいかない場合は、(バックアップをとって)〜/ .PyCharm40フォルダを削除してからPyCharmを再び開いてください。これはあなたの好みすべてを殺します。

Macでは、〜/ Library/Caches/Pycharm40と〜/ Library/Preferences/PyCharm40を削除します。

そしてWindowsの場合:C:\ Users\$ USER.PyCharm40。

10
Imran

この質問をぶつけて申し訳ありませんが、私は作るために重要なアップデートがあります。

それ以外のバージョンを使用している場合は、プロジェクトのインタプリタをPython 2.7.6に戻すことをお勧めします。他の推奨事項で問題が解決しない場合は、これでPyCharm 4.04 ProfessionalのUbuntuインストールでうまくいきました。

5
Fairlight Evony

Pycharmを閉じて、プロジェクトから.ideaフォルダを削除してから、Pycharmをもう一度起動してプロジェクトを再作成してください。キャッシュを無効にすることはできませんでしたがこれは私のために働いた。

3
Jason McVetta

Pythonバージョンの問題でもあるかもしれません。私はそれを機能させるために正しいものを選ぶ必要がありました。 enter image description here

2
Shehaaz

提案された解決策のどれも私のために働かなかった後私はついにこれがうまくいった。私はDjangoのrestフレームワークプロジェクトで遊んでいて、自分でセットアップしたvirtualenvを使っていました。ルートフォルダをソースルートとしてマークすることでPycharmを修正することができましたが、その後Djangoのサーバーは解決の例外を投げます。ですから、一方が他方ではそうでないときには一方がうまくいくでしょう。

最終的に私はサブフォルダをpycharmのソースルートとしてマークしなければなりませんでした。だから私の構造はこんな感じでした

-playground
     -env
     -playground

その2番目のプレイグラウンドフォルダは、期待通りに動作するためにすべてのソースルートとしてマークしなければならなかったものです。それは私のシナリオには何の問題も示さなかったので、それは実行可能な解決策でした。

他の誰かがそれを使うことができる場合に備えて私が共有することを考えていました。

2
user2233949

「未解決の参照」エラーだけを無視したい場合は、これをクラス/メソッド/関数の前に置くことで明示的にPyCharmに伝えることもできます。

# noinspection PyUnresolvedReferences
1
flix

上記の解決策のどれも私のために働きませんでした!
プロジェクトに仮想環境を使用している場合は、仮想環境ディレクトリ内にあるpython.exeファイルをプロジェクト(Alt + Ctrl + Shift + S)のインタプリタとして適用するようにしてください。これで問題は解決しました。

1
Ali Sherafat

他のすべてのプロジェクトを閉じて、必要なプロジェクトをPycharmで単独で実行しました。私はpycharmとは別にvirtualenvを作成し、そこに必要なモジュールをすべてpipを使って追加しました。この仮想環境をプロジェクトのインタプリタに追加しました。これで私の問題は解決した。

1
Waqar Detho

私の場合、検査エラーはPythonコードの非常に特殊なケースが原因で現れます。 2つの派手な関数と2つのリストアクセスを含むmin関数は、私のコード検査でこの種のエラーを発生させます。

次の例の 'd = 0'行を削除すると、予想どおり未解決の参照エラーが発生しますが、読み取りを行ってもコードインスペクタのエラーにはなりません。その後も問題なくコードを実行できます。

import numpy as np
def strange(S, T, U, V):
    d = 0
    print min(np.abs(S[d]), np.abs(T[d]), U[d], V[d])

キャッシュをクリアしたり、パスのリストをリロードしてもうまくいきません。次のパッチ例のいずれかを使用してコードを変更するだけでうまくいきます。

  • 「最小」パラメータの別の順序付け:概略的にS U T VであるがS T U VまたはT S U Vではない。
  • 関数の代わりにメソッドを使用する:np.absの代わりにS [d] .abs()(S [d])
  • 組み込みのabs()関数を使う
  • 選択したパラメータに数値を追加する:U [d] + 0。
1
Wannes Goethals

答えはどれも私の問題を解決しませんでした。

私にとってそれは環境を切り替えて同じ環境に戻ることでした。 File->Settings->Project interpreter

Conda環境を使用しています。

1
Kristjan Kica

私のさまざまなStackOVerflowの合併が答えて、なんて悪夢なのでしょうか。

  1. ローカルインタプリタ/usr/bin/pythonX.Xに切り替えて適用
  2. 上記の回答のようにパスを表示する
  3. スケルトンパスを見つけます。私のもの(/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Virtインタプリタに戻り、スケルトンパスが自動的に表示されない場合は手動でスケルトンパスを追加します。
1
Tim

vagrantを使用している場合は、間違ったPythonインタプリタが原因でエラーが発生する可能性があります。 vagrantではpyenvを使っているので、Python Interpreter pathのパスを/usr/bin/pythonから/home/vagrant/.pyenv/versions/vagrant/bin/pythonに変更しなければなりません enter image description here

0
Daniil Mashkin

非常に簡単

ルートディレクトリをSOURCE ROOT(赤)、アプリケーションがEXCLUDED ROOT(青)とマークするだけです。

未解決の参照は消えます。

  • enter image description here あなたがPyChram proを使うなら、それはあなたのためにこれを自動的に行います。
0
mujad