teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

補足を追加

2021/01/23 07:39

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -6,4 +6,14 @@
6
6
 
7
7
  その場合、「deep-learning-from-scratch」フォルダーが実行時のカレントディレクトリになるので、`sys.path.append(os.pardir)`で追加されるフォルダーが想定(ch03の親のdeep-learning-from-scratch)とは異なるフォルダーになります。すると、そこには「dataset」フォルダーは存在しないため、提示されたエラーが発生します。
8
8
 
9
- 実際に、同じリポジトリをcloneし、その中の「ch03」フォルダーをVSCodeの「フォルダーで開く」で開いて、VSCodeから実行すると、エラーを出さずに動作します。
9
+ 実際に、同じリポジトリをcloneし、その中の「ch03」フォルダーをVSCodeの「フォルダーで開く」で開いて、VSCodeから実行すると、エラーを出さずに動作します。
10
+
11
+ 対策としては、「カレントディレクトリの親」ではなく、「このコードがあるディレクトリ(フォルダー)の親」を`sys.path.append`に指定すればいいので、
12
+
13
+ ```Python
14
+ import pathlib
15
+ sys.path.append(pathlib.Path(__file__).resolve().parents[1].as_posix())
16
+ from dataset.mnist import load_mnist
17
+ ```
18
+
19
+ のように修正すればいいでしょう。

1

補足を追加

2021/01/23 07:39

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -4,6 +4,6 @@
4
4
 
5
5
  おそらく、あなたは「ch03」フォルダーではなく、その親の「deep-learning-from-scratch」フォルダーをVSCodeで開き、階層構造を辿って「mnist_show.py」を実行しているのではないですか。
6
6
 
7
- その場合、「deep-learning-from-scratch」フォルダーが実行時のカレントディレクトリになるので、`sys.path.append(os.pardir)`で追加されるフォルダーが想定(ch03の親のdeep-learning-from-scratch)とは異なるフォルダーになります。
7
+ その場合、「deep-learning-from-scratch」フォルダーが実行時のカレントディレクトリになるので、`sys.path.append(os.pardir)`で追加されるフォルダーが想定(ch03の親のdeep-learning-from-scratch)とは異なるフォルダーになります。すると、そこには「dataset」フォルダーは存在しないため、提示されたエラーが発生します。
8
8
 
9
9
  実際に、同じリポジトリをcloneし、その中の「ch03」フォルダーをVSCodeの「フォルダーで開く」で開いて、VSCodeから実行すると、エラーを出さずに動作します。