回答編集履歴
1
微修正
answer
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
そんなことはないのでは。
|
4
4
|
|
5
5
|
ファイルの入出力を相対パスで書く時はカレントディレクトリが基準で、
|
6
|
-
相対importはlib.pyの場所
|
6
|
+
相対importはlib.pyの場所が基準です。
|
7
|
-
(というかmain.pyから見たパスが使われるなら、lib.pyから**見た場所じゃない**ということでそれは**相対**じゃない
|
7
|
+
(というかmain.pyから見たパスが使われるなら、lib.pyから**見た場所じゃない**ということでそれは**相対**じゃないですよね?)
|
8
8
|
|
9
9
|
----
|
10
10
|
|
@@ -19,8 +19,11 @@
|
|
19
19
|
```python
|
20
20
|
import libs.lib_sub
|
21
21
|
```
|
22
|
+
と書くのが絶対importで、これはsys.pathから探索されます。
|
22
|
-
|
23
|
+
上記の場合実行スクリプトのmain.pyがある場所(要はhogeディレクトリ)が基準になると期待して書いています。
|
23
24
|
|
25
|
+
|
26
|
+
それに対して、
|
24
27
|
```python
|
25
28
|
from . import lib_sub
|
26
29
|
```
|
@@ -28,10 +31,11 @@
|
|
28
31
|
```python
|
29
32
|
from .lib_sub import foo
|
30
33
|
```
|
31
|
-
書くのが相対importでしょう。
|
34
|
+
と書くのが相対importでしょう。
|
35
|
+
これらはlib.pyがある場所(要はlibsディレクトリ)を基準に探索します。
|
32
36
|
|
33
37
|
|
34
38
|
----
|
35
39
|
|
36
40
|
だいたいにおいて相対importを使う方が自然だと思います。
|
37
|
-
例えば「ちょっと気が変わってlibsというパッケージ名を別の名前にしたくなった」とか「libsの上にもうひとつ親パッケージを作って `hogehoge.libs` と一段深くしたくなった」とかいう時に、相対importが使わていればlib.pyの中
|
41
|
+
例えば「ちょっと気が変わってlibsというパッケージ名を別の名前にしたくなった」とか「libsの上にもうひとつ親パッケージを作って `hogehoge.libs` と一段深くしたくなった」とかいう時に、相対importが使われていればlib.pyの中を変更する必要がないという利点があるからです。
|