モジュールのインポートに関する考察

自作モジュール間でインポートしようとすると、実行するディレクトリや対話モードか否かによってインポートエラーが発生することがあります。

よって、ちゃんと動くにはどうすればいいかを実験しています。
(マニュアルや解説書を読んでも、「こうすればいい」というのがありません)

以下のようなディレクトリ構成にします。

work
├── sub1
│   └── hello.py
└── sub2
    └── book.py

Pythonプログラムは以下の通りです。

■hello.py

def main():
    print('Hello!')

if __name__ == '__main__':
    main()

■book.py

class Book:
    def info(self):
        print('This is a book.')

(実行結果) カレントディレクトリをworkにして実行します。

$ python sub1/hello.py
Hello!