IPythonで%run foo.py -tしてたけど%run -m foo -tにしていく方が、他のプロジェクトから部品として使うフェーズになってくると便利か

  • 前者は相対インポートができない
  • 後者はインポートされた時と同様にモジュールとして実行される
    • つまり相対インポートできる

venvやunittestも-mしてるし。

あー。このスタイルの場合、実行されたスクリプトのグローバルスコープがipythonの側のスコープと別になるのか

  • 適当に関数を置いといて必要に応じて呼ぶことができない
  • ちゃんとargsで呼び分ける?
    • そもそも内部状態を観察したいとかの時にこれではできない
  • 単にコマンドのエントリポイントを変えたいだけならそもそもスクリプト自体分けたらいいのでは説

-m pytest