ftnext / atmaCup10-paintings-likes

https://www.guruguru.science/competitions/16/
MIT License
0 stars 0 forks source link

モジュールとしてimportでき、スクリプトとしても実行できる方法を見つける #17

Closed ftnext closed 3 years ago

ftnext commented 3 years ago

preprocess.py をバラすリファクタリングの中でニーズが発生。

2つのファイル(hoge1.py, hoge2.py)を含むパッケージ hoge1.py で hoge2.py をimportする

ref: https://qiita.com/ysk24ok/items/2711295d83218c699276 implicit relative import -> explict relative import (PEP 328)

__package__, __name__ https://docs.python.org/ja/3/reference/import.html#import-related-module-attributes https://www.python.org/dev/peps/pep-0366/#proposed-change

ftnext commented 3 years ago

解決できた方法

TODO:深堀りの余地を残す

if __name__ == "__main__" and __package__ is None:
    # スクリプトとして実行
    import data_io
else:
    # モジュールとしてimport
    from . import data_io