やる気がストロングZERO

やる気のストロングスタイル

pythonパッケージをターミナルから実行する場合は[-m]オプションを使う

自作したpythonのパッケージのスクリプトをターミナルから実行しようとしたらimportでコケていた。

パッケージ内容

└── my_package
    ├── __init__.py
    ├── main.py
    └── people.py

main.py

from .people import People


man = People()
man.say_hello()

people.py

class People():
    def say_hello(self):
        print("hello")

ターミナルから実行すると「モジュールが見つからない」とエラー

$ python my_package/main.py 
Traceback (most recent call last):
File "my_package/main.py", line 1, in <module>
from .people import People
ModuleNotFoundError: No module named '__main__.people'; '__main__' is not a package

[-m]オプションをつけて実行したら実行できた。この時指定するのはファイル名でなくてパッケージ名であることに注意する

$ python -m my_package.main
hello

今回自分は詳しいところまでは追っていないけど、ここが書いてくれている感じ。 https://qiita.com/ysk24ok/items/2711295d83218c699276