pythonのパッケージについて

pythonのpackageの考えかたは、基本Javaと同じだと思いました。

フォルダ階層で、パッケージの階層を表現します。

  • フォルダ構成

    ├── main.py
    └── sources
      └── aaa
        └── daily.py
    
  • main.py

    from sources.aaa import daily
    
    print('Daily forecaset:', daily.forecast())
    

フォルダ階層が深くても、from.で区切って指定すればOKです。

fromを使用している場合、import.を指定するとエラーになります。

あれ 本には、各フォルダに、__init__.pyが必要ってあるけど、なくてもエラーにならない。

なぜ? 不要なのと思い、python2で実行したらエラーになりました。

  • python2での実行結果

    pack$ python2 main.py
    Traceback (most recent call last):
      File "main.py", line 1, in <module>
        from sources.aaa import daily
    ImportError: No module named sources.aaa
    

__init__.pyファイルを各ディレクトリに追加すると正常に実行されました。

ここで注意が必要なのは、sourcesフォルダにも__init__.pyが必要です。

ないとエラーになります。

python3の本にも、__init__.pyが必要とあったので、python3でも作った方がいいよね。

以上です。

勉強に使用している本

非常に分かりやすくておすすめです。

プログラムは経験あるけどPythonは初心者って方に、絶対おすすめの1冊です。

comments powered by Disqus