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

回答編集履歴

2

誤字

2019/01/17 16:11

投稿

nico25
nico25

スコア830

answer CHANGED
@@ -1,16 +1,17 @@
1
1
  #### 1. 対策
2
+ 自分で書いた unmo.py を import したいという認識でよろしいでしょうか?
3
+ であれば先頭にドット . の無い **絶対 import** に書き換えて見てください。
4
+ ```
5
+ from unmo import Unmo
6
+ ```
7
+
8
+ #### 2. 原因
2
9
  先頭にドット . がついた import は **相対 import** と呼ばれるものです。
3
10
  相対 import は**パッケージの中でしか実行できません**。
4
11
  ```
5
12
  from .unmo import Unmo
6
13
  ```
7
14
 
8
- これを **絶対 import** に書き換えてください。
9
- ```
10
- from unmo import Unmo
11
- ```
12
-
13
- #### 2. 原因
14
15
  次のように実行したとき。
15
16
  ファイル名.py は、「スクリプト」として実行されます。
16
17
  ファイル名.py は、「パッケージ」では無いので相対 import は使えないということです。

1

誤字

2019/01/17 16:11

投稿

nico25
nico25

スコア830

answer CHANGED
@@ -1,11 +1,11 @@
1
- #### 1. 改善
1
+ #### 1.
2
- 先頭にドット . がついた import は相対 import と呼ばれるものです。
2
+ 先頭にドット . がついた import は **相対 import** と呼ばれるものです。
3
3
  相対 import は**パッケージの中でしか実行できません**。
4
4
  ```
5
5
  from .unmo import Unmo
6
6
  ```
7
7
 
8
- これを絶対 import に書き換えてください。
8
+ これを **絶対 import** に書き換えてください。
9
9
  ```
10
10
  from unmo import Unmo
11
11
  ```
@@ -24,7 +24,8 @@
24
24
 
25
25
  #### 3. 確認したこと
26
26
  相対 import をしているスクリプトを実行したところ
27
+ 完全に一致するわけでは無いのですが
27
- 同じエラーが発生することを確認しました。
28
+ 似たようなエラーが発生することを確認しました。
28
29
  ```
29
30
  # sample.py というファイルを作り
30
31
  from .unmo import Unmo
@@ -33,7 +34,7 @@
33
34
  $ # 実行してみる
34
35
  $ python sample.py
35
36
  Traceback (most recent call last):
36
- File "imp.py", line 1, in <module>
37
+ File "sample.py", line 1, in <module>
37
38
  from .unmo import Unmo
38
39
  ModuleNotFoundError: No module named '__main__.unmo'; '__main__' is not a package
39
40
  $