__file__ は、実行中のスクリプトファイルのパスを取得するわけだが、
python 実行中のスクリプトファイル絶対パス
と実行する時は、パスもフルPATH を取得できるが、スクリプトの場所に
カレントディレクトリを移動して
python 実行中のスクリプトファイル
では、__file__ は、スクリプトファイル名だけになってしまう。
os.path.abspath(__file__) を使えば、カレントディレクトリであろうが、
フルパスを取得できる。
https://oboe2uran.hatenablog.com/entry/2020/10/25/102839
https://oboe2uran.hatenablog.com/entry/2020/10/24/010705
と、悩んだことがあるが、
Project/common/logger.py
Project/alpha/aaa.py
とあって、aaa.py で、logger.py をインポートして使用したい時は、、
import os import sys from pathlib import Path sys.path.append('%s' % Path(os.path.abspath(__file__)).parent.parent.resolve()) from common.logger import Logger
とすれば、カレントディクトリこのスクリプトの場所で実行しても、
インポートは働く。