Чтобы понять, почему это удивительное поведение не полностью ужасно, рассмотрим приложение, которое принимает имя файла конфигурации в качестве аргумента:
config_root = "/etc/myapp.conf/"
file_name = os.path.join(config_root, sys.argv[1])
Если приложение выполняется с:
$ myapp foo.conf
Будет использоваться файл конфигурации /etc/myapp.conf/foo.conf
.
Но подумайте, что произойдет, если приложение вызывается с помощью:
$ myapp /some/path/bar.conf
Тогда myapp
должен использовать файл конфигурации на /some/path/bar.conf
(а не /etc/myapp.conf/some/path/bar.conf
или аналогичный).
Это может быть не очень хорошо, но я считаю, что это мотивация поведения абсолютного пути.