皆さんはPythonを書く時、何のIDEを使われているでしょうか。私は普段PyCharmを利用しています。
ただ、WSL上での作業などで時折VSCodeを用いることがあり、PyCharmとの環境差分に苦しめられています。今回はそうした苦悩を軽減するためのTipsになります。
要約
以下をsettings.json
に記述することで、PyCharmのRun
を行った時の動作を再現できます。
{
"code-runner.runInTerminal": true,
"code-runner.executorMap": {
"python": "export PYTHONPATH=$workspaceRoot && python $fullFileName"
},
}
以下解説になるので、動けば良いという方は飛ばしてください。
そもそもPyCharmの実行時の挙動とは
PyCharmで上記のようにsys.path
をprintしてみると、以下のようにimportの検索対象には<実行対象のファイルが存在するフォルダ>と<PyCharmのプロジェクトのルート>が含まれていることが分かります。これはPyCharmが裏でよしなにやってくれているみたいです。
[
'C:\\Users\\hoge\\python_project\\src',
'C:\\Users\\hoge\\python_project\\',
]
<実行対象のファイルが存在するフォルダ>がPYTHONPATHに加わるのはPythonのデフォルトの挙動なので、後はプロジェクトのrootをimport時に解決できるように設定を加えればVSCodeの挙動をPyCharmに似せられそうです
VSCodeのCodeRunnerの設定を変更する
CodeRunner
のデフォルトの挙動はGithubに載っていますがpython -u
になっています。settings.json
をいじってここを変更します。
あとは要約に書いた通りの結果になります。$workspaceRoot
などのCodeRunnerで使える予約語はREADME.mdに載っています。
コメント