自作モジュール間でインポートしようとすると、実行するディレクトリや対話モードか否かによってインポートエラーが発生することがあります。
よって、ちゃんと動くにはどうすればいいかを実験しています。
(マニュアルや解説書を読んでも、「こうすればいい」というのがありません)
以下のようなディレクトリ構成にします。
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!