次の職場でDjangoを用いるため、Pythonを使い出しました。
パッケージ管理は以下を使っています。
- GitHub - pypa/pipenv: Python Development Workflow for Humans.
- Poetry - Python dependency management and packaging made easy.
Ruby / JavaScriptの開発はVSCodeで行ってきたため、PythonもVSCodeで書いています。
が、とある設定を加えないと外部モジュールのインテリセンス(コード補完)が有効にならないとわかりました。
この記事には、以下のことをメモしておきたいと思います。
- 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
after
おわり
環境(ワークスペース)ごとに設定必要ですが、ゴリゴリコードを書く方はやっておくと便利な設定かと思います。
注意事項
python.autoComplete.extraPaths
に設定する値は、基本環境によって異なります。
また、個人PCの設定情報を公開しないため、.vscode/settings.json
を.gitignore
に追加しておくと良いです。
# .gitignore .vscode/settings.json