Я хотів би побачити, який найкращий спосіб визначити поточний каталог скриптів у python?
Я виявив, що через безліч способів виклику коду python важко знайти хороше рішення.
Ось деякі проблеми:
__file__не визначено, якщо сценарій виконується за допомогоюexec,execfile__module__визначається лише в модулях
Користувачі:
./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py')(з іншого сценарію, який може бути розташований в іншому каталозі і може мати інший поточний каталог.
Я знаю, що ідеального рішення немає, але я шукаю найкращий підхід, який вирішує більшість випадків.
Найбільш використовуваний підхід, os.path.dirname(os.path.abspath(__file__))але це дійсно не працює, якщо ви виконуєте сценарій з іншого exec().
Увага
Будь-яке рішення, яке використовує поточний каталог, вийде з ладу, це може відрізнятися залежно від способу виклику сценарію або його можна змінити всередині запущеного сценарію.
pathlibрішення , якщо ви використовуєте Python 3.4 або вище: stackoverflow.com/a/48931294/1011724
python myfile.pyробиться з оболонки, вона працює, але :!python %і :!python myfile.pyзвідси, і зсередини vim не вдається з допомогою системи не може знайти вказаний шлях. Це досить дратує. Чи може хтось прокоментувати причину цього та потенційні шляхи вирішення?