imadedede のブログ

今出川潤の出張所。

VS Code の Pylint で venv 仮想環境に追加したモジュールを読み込む

先日の記事の続き。

imadedede.hatenablog.com

使用環境は LinuxMint 19.1 tessa で apt インストールの Python3.6.8 + Pylint3 1.8.3 + astroid 1.6.0。Microsoft Visual Studio Code 1.36.0 には Python 拡張機能 2019.6.22090 を追加している。

問題

今作ってる Python プロジェクトでは venv で仮想環境を作って pip3 でパッケージを追加している。しかし、先日の方法でシステムの Pylint を VS code に設定すると、仮想環境にインストールした PyPI パッケージを読み込んでくれず、 VS Code 上で常に赤線が引かれてしまう。非常に鬱陶しい。ではどうするか。

解決策

Pylint が仮想環境のパッケージも読み込むように設定する。

1. コマンドライン上で仮想環境をアクティブにする

標準ライブラリの venv を使って仮想環境を作りアクティブ化する。例では仮想環境のフォルダを project としている。

$ python3 -m venv project
$ . project/bin/activate

2. プロジェクトのルートに .pylintrc を作る

プロジェクトに pylint の設定ファイルを追加する。

(project) $ pylint --generate-rcfile > .pylintrc

3. init-hook を編集

Pylint 設定を編集する。

# init-hook のコメントアウトを外してライブラリを読み込むよう設定
init-hook="import sys; sys.path.append('./project/lib/python3.6/site-packages')"

Pylint の起動前動作に仮想環境のパッケージのインストール先ディレクトリを追加する。今回の環境では ./project/lib/python3.6/site-packages になったが、各自の環境で読み替えてもらえれば。

これで、仮想環境のパッケージを読み込んだ状態で VS Code を起動できる。余計な赤線も入らない。

余談

Pylint のデフォルト設定を追加すると、今度はちょっとした記述に緑線が引かれるようになり、これはこれで少しうるさく感じてしまう。しかし、まあ、お行儀良く書くのが Python の流儀なので、普段からこのうるささを黙らせ続けるくらいの方が丁度いいのかもしれない。

参考

qiita.com