30
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCodeワークスペースのルート != PythonエントリーポイントのときのIntelliSense設定

Last updated at Posted at 2020-08-25

はじめに

Visual Studio Code (以降、VSCode)でPythonプログラムを書くのは便利ですよね。便利にするためにMicrosoftの Python 拡張機能を入れている方も多いと思います。

が、下図のように、スクリプトはちゃんと動くのに、自作のパッケージやモジュールに対して、IntelliSenseがおかしな警告をだしたり、コード補完が効かないことがありませんか?

aaa.png
警告の例: Import "XXXXXX" could not be resolved Pylance (reportMissingImports)

ユーザーないしワークスペースで設定されている、警告だしやコード補完に使われるPython言語サーバーと呼ばれるものの種類によっては、ワークスペースのルートフォルダーと動かしたいPythonスクリプトのエントリーポイントが異なるときに、このようなことが起こります。

このままではせっかくのVSCodeの魅力が半減してしまうので、設定を変更して、警告をなくしコード補完が効くようにします。

以下、上の画像のフォルダー構造を例に説明します。
(想定ケースとして、開発者とは別のユーザーにプログラムをワークスペースフォルダーごと配布するが、ユーザーには RunThis.bat バッチファイルをたたいてもらい、DoNotTouchThisFolder 以下のPythonスクリプトにはさわってほしくないという場合を考えました。)

先人の記事

環境

  • Windows 10 1909 64ビット版
  • Python 3.7.1 (Anaconda)
  • Visual Studio Code 1.48.1
    • Python 拡張機能 v2020.8.103604
    • Pylance 拡張機能 v2020.8.2

設定

Python言語サーバーによって設定値が異なります。

Python言語サーバーがMicrosoftのとき

ユーザー or ワークスペースの settings.json で、 "python.languageServer": "Microsoft" となっているときの話です。Microsoftの Python 拡張機能を入れてポチポチ押していたらこうなっている人もいるかと思います。
このときは、ワークスペースの settings.json に以下を書き加えます。

settings.json
{
    (ほかの設定), 
    "python.autoComplete.extraPaths": [
        "DoNotTouchThisFolder"
    ], 
    (ほかの設定)
}

※ ユーザー or ワークスペースの settings.json で、
"python.jediEnabled": false も加える必要があるかもしれません。

Python言語サーバーがPylanceのとき

ユーザー or ワークスペースの settings.json で、 "python.languageServer": "Pylance" となっているときの話です。Python 拡張機能に加えて、Microsoftが(本記事執筆時点で)最近リリースした拡張機能 Pylance を入れてポチポチ押していたらこうなっている人もいるかと思います。
このときは、ワークスペースの settings.json に以下を書き加えます。

settings.json
{
    (ほかの設定), 
    "python.analysis.extraPaths": [
        "DoNotTouchThisFolder"
    ], 
    (ほかの設定)
}

※ ユーザー or ワークスペースの settings.json で、
"python.jediEnabled": false も加える必要があるかもしれません。

Python言語サーバーがJediのときは、わかりません

結果

bbb.png
😉

30
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?