質問: ``` from . import hogehoge ``` とあるのですが、この`.`は何を意味するのですか。
回答: `.` は自分と同じパッケージを示しています。 Python では import をするとき、相対パスで import をすることもできるようになっています。たとえば「内部的に使っているパッケージを import したい」というときに使うことがあります。 相対パスで import をする際にはそのパスを書かないといけない訳ですが、「自分と同じパッケージにあるものを import したい」という際に `from . import ~` という風に書きます。 また、「自分の隣にあるモジュールを import したい」というときに `from .tonarinomodule import ~` と書くこともできます。 具体例を見てみましょう。次のようなディレクトリ構造があったとします。 ``` myproject/ ├── packageA │ ├── __init__.py │ └── module1.py └── packageB ├── __init__.py ├── module2.py └── module3.py ``` 更に packageB の `__init__.py` で `ClassX` が、`module3.py` で `ClassY` が定義されてるとします。 このとき `module2.py` から `ClassX` や `ClassY` を import しようと思うと次のように書けます。 ``` from . import ClassX from .module3 import ClassY ``` 相対 import はこのようにすぐそばにあるモジュールを手軽に import したいというときに便利です。 一方で相対 import はディレクトリ構造に依存するため、規模が大きめのプロジェクトでは管理しにくく、あまりオススメできません。たとえば上の例だと相対 import を使って `module2.py` から `module1.py` にあるものを import、というのもできるのですが、`packageA` のディレクトリ上での位置が変わるだけで機能しなくなってしまいます。