Я хотів би побачити, який найкращий спосіб визначити поточний каталог скриптів у 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()
.
Увага
Будь-яке рішення, яке використовує поточний каталог, вийде з ладу, це може відрізнятися залежно від способу виклику сценарію або його можна змінити всередині запущеного сценарію.
pathlib
рішення , якщо ви використовуєте Python 3.4 або вище: stackoverflow.com/a/48931294/1011724
python myfile.py
робиться з оболонки, вона працює, але :!python %
і :!python myfile.py
звідси, і зсередини vim не вдається з допомогою системи не може знайти вказаний шлях. Це досить дратує. Чи може хтось прокоментувати причину цього та потенційні шляхи вирішення?