cha_pppo blog

i have an unbeknown dictionary. everything is up to me.

Python debug

PATH関連

pip packageのinstall先

pip -V
pip 19.1.1 from /Users/xxx/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pip (python 3.7)

Pythonが読み込むlibraryのPATHを確認する

python -c 'import sys; print(sys.path)'

pprintで標準出力を見易くする

import itertools
import pprint

a=list(itertools.permutations('abc',3))
print(a)
docker run -it --rm --name python_test -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python test_script.py
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]

VS CodeでPython Debug

基本的な手順は公式サイトの通り。

Debugのステップ

  1. Python のExtensionをinstall。
  2. launch.json を編集。
  3. 当該ファイルを開く( "console": "integratedTerminal" の場合 )。
  4. Debug実行。

launch.json attributes

  • program
    • debug対象ファイルへの絶対パス
    • デフォルトの ${file} で良いと思われる。
  • console
    • debug targetのファイルをどこで立ち上げるか。
    • デフォルトの "console": "integratedTerminal" で良いと思われる。
  • pythonPath
    • interpreterの絶対パス
    • pyenvだったら "pythonPath": "/Users/xxx/.pyenv/shims/python3.7" というような形 (多少冗長。。)。
  • args
    • 引数。
  • stopOnEntry
    • debug開始直後(1行目)でstopさせるか。
  • env
    • 環境変数

module not found というようにinstallしているはずのpip packageが見つからない場合等は、 pythonPath を見直してみる。以下のように envパスを定義している例もあった。

"env": {
    "PYTHONPATH": "${workspaceFolder}"
},

設定例

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "pythonPath": "/Users/xxx/.pyenv/shims/python3.7",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": [
                "-s",
                "2018-02-01",
                "-e",
                "2018-02-04"
            ]
        },
}

f:id:hrt0kmt:20190222211409p:plain

※ このような形で変数展開される.