Open7

vscodeをメインのエディタにするために

Naoyuki YamadaNaoyuki Yamada

とりあえずpythonの話。
メインはPyCharmを使っているが、

  • devcontainerの開発者体験が良い
  • 動作が軽い
  • 無料で複数PCで同時起動できる
    • IDEにお金を払うこと自体は抵抗ないが、1ライセンスだと複数PCで同時起動できないのが致命的。同時に2台のPCで開発していることがあるため。せめて2台までは許可してほしい。
    • ただ、最近ssh接続でもう別PCにつないでそこから開発する流れを確立したので問題なくなってきたのだが、そのssh接続で開発することもvscodeでやるようになっている。

vscodeに移行したい。ただ、pycharmに比べてvsocde + pylanceが機能不足に感じられることも多少あった。

Naoyuki YamadaNaoyuki Yamada

まずauto importが弱い。

例として

timezone.datetime.fromisoformat("2021-01-01 00:00:00+09:00")

こういうコードがあったとして、これは django.utils.timezone をimport させたいという意図だが、pycharmだとこれはデフォルトで普通にimportできる(alt + enterで候補に出てくる)。だがvscode(pylance)では出てこない。
これをなんとかimportできるようにしたいといろいろ試行錯誤して見た結果、下記の情報にたどり着いた。

https://github.com/microsoft/pylance-release/issues/2312
https://github.com/microsoft/pylance-release/issues/2533

vscodeのsettings.jsonで下記の2行を入れれば良い。

  "python.analysis.packageIndexDepths":[["django",3, true]],
  "python.analysis.indexing": true,

これで意図通りにvscode(pylance)でもimport(cmd + .)できるようになる。

Naoyuki YamadaNaoyuki Yamada

全然別の分野の話で、C++でdevcontainer立ち上げてgdbでデバッグできる環境を作りたかったがこのへんでこけた。

Mac M1 Ptrace - warning: ptrace: Function not implemented · Issue #5191 · docker/for-mac https://github.com/docker/for-mac/issues/5191

Apple SilliconでQEME使ってるdocker環境でptrace使えない。特定のオプションが必要的なエラー。
ちょっとやった感じうまく行かず、はまりそうであきらめた。

Apple SilliconネイティブのDockerイメージ使えばいいだけなんだが。

Naoyuki YamadaNaoyuki Yamada

エディタ内でターミナルを起動したときに環境変数を設定する

direnv入れる代わりみたいなこと

.vscode/settings.jsonに設定する。

{
    // add environment variables to the terminal
    "terminal.integrated.env.osx": {
        "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin",
        "AWS_PROFILE": "kinesis-test"
    }
}
Naoyuki YamadaNaoyuki Yamada

Test explorerでpytestでsrc以下のテストが見つからない

ERROR - ModuleNotFoundError: No module named 'src'

.envファイルを作って

PYTHONPATH="."

を置いて解決。