ざきの学習帳(旧 zackey推し )

日々の学びを書きます

【VSCode】python.autoComplete.extraPaths を設定し、外部モジュールのインテリセンスを有効にする

次の職場でDjangoを用いるため、Pythonを使い出しました。

パッケージ管理は以下を使っています。

Ruby / JavaScriptの開発はVSCodeで行ってきたため、PythonVSCodeで書いています。

が、とある設定を加えないと外部モジュールのインテリセンス(コード補完)が有効にならないとわかりました。

この記事には、以下のことをメモしておきたいと思います。

  • Visual Studio Code で、外部モジュールのインテリセンスを有効にする方法

環境

本件は以下環境で設定した手順です。

パッケージ管理はPoetryを使っていますが、Pipenvでもインテリセンスが有効になること確認済です。

インテリセンスを有効にする方法

上記公式ドキュメントに以下のような記載があります。

To enable IntelliSense for packages that are installed in other, non-standard locations, add those locations to the python.autoComplete.extraPaths collection in the settings file

翻訳すると、

標準以外の場所にインストールされているパッケージに対して IntelliSense を有効にするには、設定ファイルの python.autoComplete.extraPaths コレクションにその場所を追加します

とのことです。

そのため、Poetry(などのパッケージ管理)で外部モジュールをインストールしたパスを特定、python.autoComplete.extraPaths に指定すればインテリセンスが有効となります。

手順

まず、外部モジュールのインストール先を確認します。

# 外部モジュール「pygments」を追加
poetry add pygments

# 仮想環境に入る
poetry shell

# REPL起動
(django-rest-tutorial-Gs_Sclct-py3.7) bash-3.2$ python

#  「pygments」のパスを確認
>>> import pygments as p
>>> p.__file__
'/Users/〜省略〜/django-rest-tutorial-Gs_Sclct-py3.7/lib/python3.7/site-packages/pygments/__init__.py'

/Users/〜省略〜/django-rest-tutorial-Gs_Sclct-py3.7/lib/python3.7/site-packages/pygments/__init__.py
/Users/〜省略〜/django-rest-tutorial-Gs_Sclct-py3.7/lib/python3.7/site-packages/
が外部モジュールのインストール先です。

これをVSCodeワークスペース設定ファイル(root/.vscode/settings.json)に追記します。

// root/.vscode/settings.json
{
  "python.autoComplete.extraPaths": [
    "/Users/〜省略〜/django-rest-tutorial-Gs_Sclct-py3.7/lib/python3.7/site-packages/"
  ]
}

これで設定完了です。

動作確認

以下のようにインテリセンスが有効になることを確認できます。

before
f:id:kic-yuuki:20200517175304p:plain

after
f:id:kic-yuuki:20200517175321p:plain

おわり

環境(ワークスペース)ごとに設定必要ですが、ゴリゴリコードを書く方はやっておくと便利な設定かと思います。

注意事項

python.autoComplete.extraPathsに設定する値は、基本環境によって異なります。

また、個人PCの設定情報を公開しないため、.vscode/settings.json.gitignoreに追加しておくと良いです。

# .gitignore
.vscode/settings.json