プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

VS CodeでPythonの作業ディレクトリを設定する

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 CodePythonスクリプトを実行するとき、スクリプトファイルのある場所で実行されるほうが便利な場合があるので、その設定の仕方を説明します。

イメージとしてはsample_1とsample_2のようなプロジェクトがあって、sample_1.pyProject\sample_1sample_2.pyProject\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

とりあえず、やりたいことはできたと思いますが、もっとスマートな方法があるかもしれません。

作業ディレクトリのほかにも、エディタの設定などもプロジェクトごとにできるようです。
prius.cc