Visual StudioCodeでのPylintの「未解決のインポート」エラー


137

私は次のセットアップを使用しています

  • macOS v10.14(モハベ)
  • Python 3.7.1
  • VisualStudioコード1.30
  • ピリント2.2.2
  • Django 2.1.4

Visual Studio Codeでの生活を少し楽にするために、リンティングを使用したいと思います。ただし、すべてのインポートについて、「未解決のインポート」という状態があります。デフォルトのDjangoインポート(つまり、django.dbインポートモデルから)でも。

仮想環境のPythonファイルが表示されていないためだと思います。

すべてが正常に機能しますが、煩わしくなり始めています。

私が選択しているインタープリターは、すべてシステムバージョンのPythonです。私の仮想環境Pythonがまったく表示されていないようです(ワークスペースと同じディレクトリにないため、その部分は理にかなっています)。

私が設定している場合python.PythonPathをしてsettings.jsonのファイル、それはちょうどそれを無視し、オプションとしての私の仮想環境のパスが表示されません。また、グローバルPython設定で設定しようとしましたが、表示されません。

それを機能させるための簡単な修正はありますか?


3
pip install pylint-django、次にvsコード設定でこれを追加します:"python.linting.pylintArgs": [ "--load-plugins=pylint_django", ],
Vaibhav Vishal 2018

@VaibhavVishal残念ながら、私はまだ同じ結果を取得します(私のsettings.jsonファイルに追加しました)
jAC 2018

4
それは実際にはインポートパッケージを非常に遅く検出するVScodeの問題であり、再起動後に自動的に修正されます。
AnupamHaldkar20年

回答:


115

あなたには、ワークスペースの設定、あなたはこのようなあなたのPythonパスを設定することができます。

{
    "python.pythonPath": "/path/to/your/venv/bin/python",
}

30
この種の作品。Python固有のインポートの場合、現在は解決されますが、自分のモデルは解決されません(つまり、「from users.models importUser」はまだ解決できないと言っています)。それについての考え?
jAC 2018

7
わからない。vsコードのウィンドウを(シェルからcode <project_directory> -r)リロードするか、vscodeを再起動してみてください。
ruddra 2018

5
よくわかりませんが、ワークスペースディレクトリが正しく設定されていないと発生する場合があります。のmanage.pyルートにあることを確認してくださいworkspace。また、pylintが正しく構成され
ruddra 2018

3
あなたは天才です!これは、ワークスペースがプロジェクトのルートレベルで開始されていなかったためです。調整したら、動作を開始しました。本当にありがとう!
jAC 2018

1
本当にありがとう!昔からの問題を乗り越えるのを手伝ってくれました!

215

受け入れられた答えは、独自のモジュールをインポートするときのエラーを修正しません。

ワークスペース設定で次の設定を使用します.vscode/settings.json

"python.autoComplete.extraPaths": ["./path-to-your-code"],

参照:トラブルシューティング、未解決のインポート警告


4
混合ワークスペースがあり、すべてのPythonコードはサブフォルダーにあります。サブフォルダーに.vscodeを追加しても機能しません。これが唯一の機能するソリューションです。
デイジー

1
vscodesettings.jsonのベストアンサー。(workspace.xmlを使用する場合、受け入れられた答えが進むべき道かもしれませんが、確かに言うことはできません。私も混合ワークスペースを使用しています)解決策に感謝します。
なし

3
これが答えになるはずです。
リチャード・リー

1
これは私のために働いた!参照リンクは完全に説明しています。TL; DR; サブディレクトリにユーザーが作成したローカルスクリプトの場合、上記の設定は、Pythonインタープリターがサブディレクトリを独自のワークスペースとして認識するのに役立ちます。その後、ワークスペース内のスクリプトを認識し、モジュール全体または個々のメソッドがインポートされたときにインポートを解決します。
熱心なプログラマー

5
みなさん、こんにちは!二重星がルートディレクトリの下のサブフォルダを意味する場合は、["./ path-to-your-code"]が["./**"]になる可能性があることがわかりました。これはより簡単な解決策です。
alan232738 5020年

63

別の方法:コマンドインターフェイスを使用してください!

Cmd/ Ctrl+ Shift+ PPython:インタプリタを選択→探しているパッケージのインタプリタを選択:

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


2
私の場合、これは機能しませんでしたが、うまくいけば、この問題で他の人に役立つでしょう。
JAC

ええ、それは精神です、それは複雑な解決策ではありません、それは私のために起こったことです:)
ted

これは私のために働いた。誰かが2019年にまだ疑問に思っていた場合。
Safder19年

@Safderは私には向いていません。virtualenvの使用
dillon.harless

これは私のために働いた。私は各Pythonプロジェクトに新しいディレクトリ構造があるのでvenv、これvenvでそのプロジェクトのディレクトリにある特定のPythonを
指し

41

この問題はすでにGitHubで開かれています:

Pythonの未解決のインポートの問題#3840

MagnuesBrzenkとSpenHouetによる2つの非常に有用な答えがあります。

今のところ最善の解決策は、プロジェクトのルートフォルダーに.envファイルを作成することです。次に、次のようにPYTHONPATHを追加します。

PYTHONPATH=YOUR/MODULES/PATH

そして、settings.jsonに以下を追加します。

"python.envFile": ".env"

6
おかげで、それは完璧に機能しました!"${workspaceFolder}/.env" PYTHONPATH=FolderName
KowaiiNeko

1
Microsoft Python Language Serverを使用する場合、編集可能なインストールに共通の問題がありました。ただし、現在、ここで説明されている新しい修正後のように見えます:github.com/microsoft/python-language-server/issues/…問題は修正され ており、ExtraPathsを使用してインポートを追加できます。詳細なヘルプについてこのトラブルシューティングを見て:github.com/microsoft/python-language-server/blob/master/...
トマシュChudzik

ありがとう@ TomaszChudzik-設定: "python.autoComplete.extraPaths":["./ src"]は魅力のように機能しました!
ロバート

別の解決策は、(add2virtualenv YOUR/MODULES/PATHたとえばを使用して)virtualenvにコードベースモジュールを追加し、このvirtualenvをPythonインタープリターとして選択することです。
Antwan

21

settings.jsonファイルにこのコードがある場合は、削除してください。

{
    "python.jediEnabled": false
}

34
少し説明を追加することをお勧めします。
TIW

1
この行を編集することは、プロジェクトの大きな変更です。行: "python.jediEnabled":falseは、古い言語サーバーを無効にし、新しいMicrosoftPython言語サーバーを有効にします。ここを見てください:github.com/Microsoft/vscode-python/issues/2177必要な依存関係をenvFileに追加する方がはるかに簡単だと思います。それは別の答えで説明されています。新しいMicrosoftPython Language Serverを使用すると、インテリセンスがはるかにうまく機能します。
TomaszChudzik19年

私にとってはその逆で、settings.jsonでjediを有効にすることは私にとってはうまくいきます。詳細はこちら、stackoverflow.com
a / 57269144/2877493 –nairb19年

@Tiwは特に、他の回答が正反対を示唆しているためです。
Neinstein



17

あなたは私のような、より視覚的にしている場合は、メニューでVisual Studioのコード構成を使用することができ、ファイル設定設定Ctrl+ ,)。拡張機能Pythonに移動します。

[分析:無効]セクションで、次のメッセージの抑制を追加しますunresolved-import

VisualStudioコード設定


3
相対インポートの未解決のインポートは明らかに正しくありません。これにより、それが削除されます。
SatyaMishra20年

これは警告を修正するだけで、ノックオンの問題は修正しません。Pythonパスメソッドを使用すると、インポートの警告が消え、「ドリルイン」(「goto定義」)と「パラメーターヒント」も機能します。
davidfrancis

9

仮想環境に関連付けられているインタープリターを選択する必要があります。

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

ここをクリック(下部のステータスバー):

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

そして、使用している仮想環境を選択するだけです。完了。

通訳を選択しても動作しない場合があります。このプロセスをもう一度繰り返すだけで、解決するはずです。

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


1
これはまさに私の問題(Macの場合)であり、適切なインタプリタを選択することで解決しました。ありがとう!
Mahm00d

9

これ以外の解決策はありませんでした。settings.jsonの「Pylance」または「Microsoft」を置き換えると、私の問題は解決しました。

"python.languageServer": "Jedi"

7

この問題にはいくつの解決策があるのか​​(またはないのか)、上記のほとんどを試しましたが、何も機能しませんでした。機能した唯一の解決策は、settings.jsonファイルでPython言語サーバーをMicrosoftではなくJediに設定することです。

"python.languageServer": "Jedi"

6

以前の答えはどれも私にはうまくいきませんでした。ただし、以下の両方の行をsettings.jsonファイルに追加しました。

"python.analysis.disabled": [
    "unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]

最初の行は、実際にはリンティングエラーを非表示にしているだけです。確かに恒久的な解決策ではありませんが、画面を整理します。

この答えは私に2行目を与えました:ProtoBufコンパイルされたPython構造を持つVSコードPyLintエラーE0602(未定義の変数)

たぶん、私よりもPythonを理解している人なら、もう1つ説明できます。


嬉しい人々はこれが便利だと思っていますが、その2番目のキーと値のペアを説明できる人はいますか?
dillon.harless

4

私の解決策

このソリューションは、現在のプロジェクト専用です。

  1. プロジェクトルートで、フォルダを作成します .vscode

  2. 次に、ファイルを作成します .vscode/settings.json

  3. ファイルsetting.jsonに次の行を追加します(これはPython 3用です)

    {
        "python.pythonPath": "/usr/local/bin/python3",
    }
    
  4. これはPython2の例です

    {
        "python.pythonPath": "/usr/local/bin/python",
    }
    
  5. Pythonのインストール場所がわからない場合は、コマンドを実行するwhich pythonwhich python3、ターミナルで実行してください。Pythonの場所を出力します。

  6. この例は、ドッキングされたPython(Django)で機能します。


4

私にとって、問題は私が取り組んでいたプロジェクトに関連していました。それを理解するのに少し時間がかかったので、これが役立つことを願っています:

元のフォルダー構造:

    root/
    __init__.py  # Empty

        folder/
            __init__.py # Empty

            sub_folder_b/
                my_code.py
            sub_folder_c/
                another_code.py

another_code.pyの場合:

from folder.sub_folder_b import my_code.py

これはVisualStudio Codeでインテリセンスをトリガーしませんでしたが、正常に実行されました。

一方、インポートパスに「root」を追加すると、インテリセンスは機能しましたが、実行時にModuleNotFoundErrorが発生しました。

from root.folder.sub_folder_b import my_code.py

解決策は_削除することだったのinitのみ_残し、「フォルダ」ディレクトリ内_.pyファイルをinitはに位置_.py /root


3

Shinebayar Gのソリューションは機能しましたが、これはもう少しエレガントです。

Pythonの未解決のインポートの問題#3840からコピー:

次のプロジェクト構造の例を考えます。

  • WorkspaceRootFolder
    • .vscode
  • ...他のフォルダ
  • codeFolder

この問題を解決するために私がしたこと:

  1. ワークスペースフォルダー(ここではworkspaceRootFolder)に移動し、.envファイルを作成します
  2. この空の.envファイルに、PYTHONPATH = codeFolderという行を追加します(codeFolderをフォルダー名に置き換えます)
  3. 「python.envFile」:「$ {workspaceFolder} /。env」をsettings.jsonに追加します
  4. Visual StudioCodeを再起動します

2

これは私のために働きます:

コマンドパレット(Ctrl+ Shift+ P)を開き、[Python:インタープリターの選択]を選択します。

これを行うには、Visual StudioCodeでPythonインタープリターを設定します。


私の場合。私のpython2インタープリターは正常に動作します。非常によく協力することはできませんちょうど私のpython 3
lone_coder

2

これは、Visual Studio Codeが実際のメインフォルダーではなく、現在のフォルダーをメインフォルダーと見なすために発生します。

修正する簡単な方法は、メインフォルダーへのインタープリターパスを提供することです。

プレスCommand+ Shift+ P(またはCtrl+ Shift+P他のほとんどのシステムで)。

Pythonインタープリターを入力します

利用可能なオプションからPythonをインストールしたパスを選択します。



1

別の解決策があります。VisualStudioCodeインスタンスがに格納されているvirtualenvを取得しました.venvが、間違ったPythonバイナリを使用していました。使っていた.venv/bin/python3.7; 青いステータスバーのスイッチャーを使用します。

使用するように変更し.venv/bin/python、すべてのインポートが正しく解決されました。

これを行うときにVisualStudio Codeが舞台裏で何をしているのか、またこれが問題の原因である理由もわかりませんが、これはワークスペース設定を編集するよりも少し簡単な解決策でした。


1

Pylintエラーの場合は、以下をインストールします

pipenv install pylint-django

次に、ルートフォルダに.pylintrcというファイルを作成し、次のように記述します。

load-plugins=pylint-django

1

を使用している場合はpipenv、仮想environment.insettings.jsonファイルへのパスを指定する必要があります。例えば ​​:

{
    "python.pythonPath": 
           "/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python"
}

これは役に立ちます。


1

私にとっては、python、pylint、autopep8のパスをローカル環境のパスに設定すればうまくいきました。

ワークスペースの場合、これを追加/変更します。

"python.pythonPath": "...\\your_path\\.venv\\Scripts\\python.exe",
"python.linting.pylintPath": "...\\your_path\\.venv\\Scripts\\pylint.exe",
"python.formatting.autopep8Path": "...\\your_path\\.venv\\Scripts\\autopep8.exe",

ワークスペースでVSCodeを保存して再起動します。完了!


これは私にとってもうまくいきました。より具体的には、「python.linting.pylintPath」を設定することで問題が解決しました。Python 3.9にアップグレードするまで、この問題は発生しませんでした。私の推測では、彼らが使用しているデフォルトのpylintパスがあります。
areed11 9220

0

私は、インポートエラーを解決してきましたCtrl+ Shift+ P。「Preferencessettings」と入力し、「Preferences Open Settings(JSON)」オプションを選択します

そして、行を追加します "python.pythonPath": "/usr/bin/"

したがって、JSONコンテンツは次のようになります。

{
    "python.pythonPath": "/usr/bin/"
}

他の構成行が存在する場合は、それらを保持します。これにより、オートコンプリート用のPIPを使用してインストールしたすべてのモジュールがインポートされます。


0

私の解決策は、以前のディレクトリでVisual StudioCodeを開くことでした。


「前のディレクトリ」とはどういう意味ですか?「親ディレクトリ」という意味ですか?または、他の何か?
PeterMortensen20年

プロジェクトの前のディレクトリにあるコンソールでVSCodeを開くだけです
JeremiasCaceres20年

0

私の場合、すでにConda環境をアクティブにしていましたが、オートコンプリートやピーク定義などにローカルPythonモジュールを使用できるようにしたかったのです。

Pythonパスのリストを追加するなど、多くの解決策を試しましたが、最終的に解決したのは、Condaからlib/python{your version}/site-packagesローカルモジュールへのシンボリックリンクを作成することでした。


0

Jedi言語サービスを使用してライブラリをインクルードしようとするとエラーが発生し、ライブラリがなくても正常に動作するライブラリが1つあります(つまり、C#ライブラリ)。

ライブラリはjsonslicerであり、インストールした外部Cライブラリに依存し/usr/local/libます。それはそれと関係があるのでしょうか?

JediサービスとライブラリをConda環境にインストールし、その環境をVisualStudio内で使用しました。実行時とターミナルでは正常に動作しますが、ソースファイルの問題をチェックするときには動作せず、エラーとして表示されます。


0

まず、プラグインがインストールされていることを確認しますが、ワークスペースディレクトリが正しく設定されていない可能性があります。Pylintを確認し、基になるsettings.jsonファイルを編集するだけです。

{
    "python.pythonPath": "/usr/local/bin/python3",
    "git.ignoreLimitWarning": true
}

「Pylintをチェックするとはどういう意味ですか?チェックボックス?それが存在する/インストールされていること?他に何かありますか?ここではコメントではなく(「編集:」、「更新:」、または同様のものなしで)、回答を編集して返信してください
PeterMortensen20年

0

code-runnerをインストールし、以下のコードをsettings.jsonフォルダーに追加します。

    "code-runner.executorMap": {
        "python": "python3 -u",
    }

"python": "(モジュールまたはそのパスを含むPython実行可能ファイル)-u"、


「コードランナー」とは何ですか?あなたはそれに参照を追加できますか(ここのコメントではなく、あなたの答えを編集することによって)?
PeterMortensen20年

0

私はこの問題に3つの方法で直面しました。それらのそれぞれについて、この質問への回答で解決策が利用可能ですが、私はそれをすべてまとめようと思っただけです。

  1. 最初に、いくつかのモジュールのインポート中に「未解決のインポート」が発生し、インストールが仮想環境ではなくグローバルpipで行われていることに気付きました。

    この問題は、Pythonインタープリターが原因でした。Shift+ Ctrl+Pを使用してVisualStudio Codeでインタープリターを選択し、と入力する必要がありますSelect Python Interpreter。ここでvenvインタープリターを選択します。

  2. 2番目の問題は次のとおりです。上記の変更で問題が完全に解決されませんでした。今回はファイルsettings.jsonが原因でした。プロジェクトディレクトリにsettings.jsonファイルがない場合は、ファイルを作成して、その中に次の行を追加します。

        {
            "python.pythonPath": "apis/bin/python"
        }
    

    これにより、基本的にVisual StudioCodeにvenvにあるPythonインタープリターを使用するように指示されます。

  3. 3番目の問題は、カスタムPythonモジュールまたはファイルを別のプログラムにインポートする際に発生しました。このためには、フォルダ構造を理解する必要があります。venvのPythonはbin内にあるため、モジュールのフォルダー(ほとんどの場合アプリケーションフォルダー)を指定する必要があります。私の場合はapp

        from app.models import setup_db
    

    口頭で、models.pyからのimportsetup_dbはappフォルダーにあります。


0

venv、vscode1.48.2を使用したPython3.8.5でも同じ問題が発生し、解決策が見つかりました。(envフォルダー)/ lib / site-packagesにはパッケージが含まれていません。この設定を使用します(.vscode / settings.json)

   {
        "python.autoComplete.extraPaths": [
            "./**",
        ],
        "python.pythonPath": "env\\Scripts\\python.exe",
        "python.languageServer": "Microsoft"
   }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.