16
15

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.

PythonAdvent Calendar 2021

Day 1

【WSL】Python+VSCode環境構築

Last updated at Posted at 2021-12-13

紹介すること

  • 環境構築に必要なミドルウェアのインストール
  • anyenvを使った環境構築
  • poetryの設定
  • VSCodeの設定
  • デバック方法
  • 実行方法

環境構築

Pythonのバージョン管理ツールpyenvとバージョン管理ツールを管理するanyenvのインストール方法やVSCodeの設定方法を紹介します。

ミドルウェアのインストール

Linuxシステムアップデート

$ sudo apt update && sudo apt upgrade -y

Pythonインストールに必要なミドルウェアのインストール

sudo apt install -y zlib1g-dev libssl-dev libbz2-dev libsqlite3-dev libffi-dev \
    build-essential libreadline-dev tk-dev liblzma-dev libgdbm-dev libdb-dev unzip

anyenvのインストール

下記コマンドを実行してanyenvをインストールします

$ git clone https://github.com/anyenv/anyenv ~/.anyenv

.bashrcにパスを追加

~/.bashrcの下部に以下を追加します。

~/.bashrc
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

変更を反映

$ source ~/.bashrc

インストールされたか確認

$ anyenv -v
anyenv 1.1.4

初期化

anyenvを初期化します。

$ anyenv install --init

anyenv update pluginの導入

anyenvで管理するpyenvnodenvなどをアップデートする際

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update

pyenvとPythonのインストール

pyenvのインストール

anyenvを使ってpyenvをインストールします。

# pyenvのインストール
$ anyenv install pyenv
# ターミナルを再起動する
$ exec $SHELL -l

Pythonのインストール

pyenvでインストールできるPythonのバージョンを確認します。

$ pyenv install --list
...
  3.9.9
  3.10.0
  3.10-dev
  3.10.1
  3.11.0a3
  3.11-dev
...

現段階で最新の3.10系がインストールできそうです。

3.10.0のインストール

# 3.10.0のインストール
$ pyenv install 3.10.0
# 切り替え可能なバージョンの確認
$ pyenv versions
# インストールした3.10.0に切り替え
$ pyenv global 3.10.0

インストールされたか確認

$ python -V
Python 3.10.0

3.10.0以外も同様にpyenv install 3.xx.xxでインストールし、pyenv global 3.xx.xxで切り替え可能です。

pipのアップグレード

$ python -m pip install --upgrade pip

poetryのインストール

下記コマンドでpoetryと後から使うflake8autopep8isortもついでにインストールします。

# インストール
$ pip install poetry flake8 autopep8 isort

インストールされたか確認

$ poetry -V
Poetry version 1.1.12

poetryの設定

初期設定だとプロジェクトごとに/home/user/.cache/pypoetry配下に実行環境.venvが配置されます。しかし、VSCodeでデバックやコードジャンプを行う際プロジェクトごとにPATHを通す必要があり手間になっていまします。

そこで、各プロジェクト配下に.venvが配置されるように設定を変更します。

$ poetry config virtualenvs.in-project true

反映されたか確認
virtualenvs.in-project = trueであればOKです

$ poetry config --list
cache-dir = "/home/xxx/.cache/pypoetry"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = true # ここがtrueであればOK
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/xxx/.cache/pypoetry/virtualenvs

サンプルプログラムのダウンロード

poetryの動作確認を行うため、サンプルコードをダウンロードします

$ git clone https://github.com/sattosan/sample-poetry.git
$ cd sample-poetry

依存関係のインストール

依存関係をインストールした仮想環境を作成します

$ poetry install

VSCodeの設定

WSLからVSCodeを開きます。

./sample-poetry
$ code .

Command ‘code’ not foundとなった場合は下記を参考にしてください
https://snowsystem.net/other/windows/vscode-wsl-run-error/

拡張機能のインストール

マーケットプレースから下記拡張機能をインストールします。

  • Pylance
    image.png

  • Python
    image.png

settings.jsonの変更

こちらを参考にsettings.jsonを開きます
https://qiita.com/y-w/items/614843b259c04bb91495

json内に追加します。

  "editor.codeActionsOnSave": {
    "source.organizeImports": true
  },
  "editor.formatOnSave": true,
  "python.linting.pylintEnabled": false,
  "python.linting.flake8Enabled": true,
  "python.linting.lintOnSave": true,
  "python.linting.flake8Args": ["--ignore=E501"],
  "[python]": {
    "editor.tabSize": 4
  }

内容は下記の通りです

  • import文の並び替え
  • lintにflake8
  • ファイル保存後自動フォーマット
  • 1行79文字制限を無視
  • タブのスペース数を4

自動フォーマットされるか確認

main.pyをVSCode上で開き、修正はありませんが保存します。

修正前
from dateutil.relativedelta import relativedelta
import datetime
def main():
    for i in range(10):
        today=datetime.date.today()
        print(today)
        next_month_date=today + relativedelta(months=+i)
        print(next_month_date)
if __name__=='__main__':
    main()

保存後、下記のようにフォーマットされるはずです

修正後
import datetime

from dateutil.relativedelta import relativedelta


def main():
    for i in range(10):
        today = datetime.date.today()
        print(today)
        next_month_date = today + relativedelta(months=+i)
        print(next_month_date)


if __name__ == '__main__':
    main()

実行

VSCodeでCtrl+Shift+@でターミナルを起動します。(WSL上でもOK)
ターミナル上で下記を実行して、動作確認を行います。

$ poetry run python main.py

スクリーンショット 2021-12-13 170724.png

デバック

拡張機能Pythonをインストールしたことでエディタ上でデバックが可能です。

試しにフォーマット済みのmain.pyの8行目にプレイクポイントを貼ってみます。
image.png

F5キーを入力するとデバックモードが起動し、ステップオーバーやステップインで実行を追えます。

サイドバーの変数欄で、現在どのような値が入っているか確認できます。
image.png

コードジャンプ

Ctrlキーを押しながらクリックすることでコードジャンプが可能です
image.png

16
15
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
16
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?