Хотелось бы узнать, как лучше определить текущий каталог скриптов в python?
Я обнаружил, что из-за множества способов вызова кода на Python трудно найти хорошее решение.
Вот некоторые проблемы:
__file__
не определено, если скрипт выполняется с exec
, execfile
__module__
определяется только в модулях
Варианты использования:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(из другого сценария, который может находиться в другом каталоге и может иметь другой текущий каталог.
Я знаю, что не существует идеального решения, но я ищу лучший подход, который решает большинство случаев.
Наиболее часто используемый подход - os.path.dirname(os.path.abspath(__file__))
, но он действительно не работает, если вы запускаете скрипт из другого с exec()
.
Внимание
Любое решение, использующее текущий каталог, завершится неудачей, оно может отличаться в зависимости от способа вызова скрипта или может быть изменено внутри запущенного скрипта.