Pythonスクリプトを作ってVS Codeで実行しようとすると、同じフォルダにおいてあるはずの”test.jpg”が見つからない、という現象が起きました。
# -*- coding: utf-8 -*- from PIL import Image import os path = os.getcwd() print("Path = "+path) file = "test.jpg" img = Image.open(file)
path = os.getcwd()
を実行すると、スクリプトが実行されているpathが別のところにあることがわかります。
VS CodeでPythonスクリプトを実行するとき、スクリプトファイルのある場所で実行されるほうが便利な場合があるので、その設定の仕方を説明します。
イメージとしてはsample_1とsample_2のようなプロジェクトがあって、sample_1.py
はProject\sample_1
、sample_2.py
はProject\sample_2
を作業ディレクトリとして実行されるようにします。
Project ├── sample_1 └── sample_1.py └── sample_2 └── sample_2.py
このようなときは、Workspace
というものを設定します。
WorkdpaceはC#のVisual Studioのソリューションファイルxxx.sln
のように扱うことが出来ます。
スクリプトをVS Codeで開いている状態で、ファイルメニューから「ワークスペースの保存」でワークスペースを作成します。
適当な名前xxx.code-workspace
を付けて保存します。
作成したxxx.code-workspace
を開くと、Pathがスクリプトファイルのある場所に設定されています。
{ "folders": [ { "path": "." } ] }
もしくは、↓のように絶対パスで指定することもできます。
{ "folders": [ { "path": "C:\\Users\\***\\Projects\\Python" } ] }
このように、プロジェクトごとにWorkspaceを設定し、プロジェクト(スクリプト)を開くとき、Workspaceを開くようにすることで各スクリプトのある場所で実行されるようになります。
WindowsではデフォルトではこのWorkspaceファイルはVS Codeに紐づいていないようなので、紐づけておくと便利です。(WorkspaceファイルでVSCodeが起動するようにしておく)
Project ├── sample_1 └── sample_1.py └── sample_1.code-workspace └── sample_2 └── sample_2.py └── sample_2.code-workspace
とりあえず、やりたいことはできたと思いますが、もっとスマートな方法があるかもしれません。