Лучший способ добавить рабочую папку скрипта в путь import () для Python в Windows?

У меня есть программа на Python, которую я компилирую в Windows .exe с помощью py2exe. Используя Inno Setup , я создаю установщик Windows.

Природа моей программы такова, что она использует плагины, которые позже импортируются с помощью оператора __ import __ () . Эти плагины находятся в папке plugins, которая сама по себе является подпапкой, в которой находится файл .exe моей программы.

Теперь, чтобы программа нашла плагины, она раньше имела следующий оператор где-то в верхней части моего файла:

sys.path+= ['.']

Однако это не сработало, когда пользователь запускал программу через меню «Пуск» Windows, потому что по-видимому, рабочая папка была установлена ​​в меню «Пуск» (вместо того, где находится .exe). Итак, '.' не соответствовал тому, что я хотел.

Я исправил это, изменив оператор на следующий, чтобы оператор __ import __ () также просматривал папку, в которой находится .exe (потому что argv [0] - это полный путь к исполняемому файлу):

sys.path+= [os.path.dirname(sys.argv[0])]

Однако я не уверен, что выбрал правильное решение. Особенно потому, что моя программа предназначена для кроссплатформенности (Windows, OSX, Linux), а в документации sys.argv говорится о argv [0], что «зависит от операционной системы, является ли это полным путем. или нет'.

Должен ли я решить эту проблему по-другому, или мой подход в порядке?

5
задан Rabarberski 10 February 2012 в 11:13
поделиться