fromとimportのパスの位置がわからん

Pythonのfromimport文を使ってモジュールをインポートする方法について、以下で説明します。

例えば、次のようなディレクトリ構造があるとします:

markdown
my_project/ ├── my_package/ │ ├── __init__.py │ ├── module1.py │ └── module2.py └── my_script.py
  • my_projectはプロジェクトのルートディレクトリです。
  • my_packageはPythonパッケージで、__init__.pyファイルを含むディレクトリです。
  • module1.pymodule2.pyはPythonモジュールです。
  • my_script.pyはPythonスクリプトです。

この場合、my_script.pyからmodule1.pymodule2.pyをインポートする方法は次の通りです:

  1. module1.pyをインポートする場合:
python
from my_package import module1
  1. module2.pyをインポートする場合:
python
from my_package import module2

これらのインポート文は、my_script.pymy_projectの直下にある場合に有効です。もしmy_script.pyが別のディレクトリにある場合は、それに応じてパスを調整する必要があります。

たとえば、my_script.pymy_projectの直下にある場合:

markdown
my_project/ ├── my_package/ │ ├── __init__.py │ ├── module1.py │ └── module2.py └── my_script.py

my_script.pyからmodule1.pyをインポートする場合:

python
from my_package import module1

もしmy_script.pymy_projectの直下ではなく、別のディレクトリにある場合:

markdown
my_project/ ├── my_package/ │ ├── __init__.py │ ├── module1.py │ └── module2.py └── some_directory/ └── my_script.py

my_script.pyからmodule1.pyをインポートする場合:

python
from my_package import module1

また、Pythonの標準ライブラリやサードパーティのライブラリをインポートする場合は、それぞれのライブラリの名前を指定します。たとえば、import csvfrom django.core.management.base import BaseCommandなどです。

未分類

Posted by ぼっち