Я построил пакет python, который устанавливает с несколькими внешними файлами. Мне нужно иметь возможность читать эти файлы из сценария, который устанавливается с пакетом. Я вижу, что я могу использовать __file__
внутри моего скрипта, и он возвращает что-то вроде этого:
/Library/Python/2.6/site-packages/M5-0.3.0-py2.6.egg/EGG-INFO/scripts/..
и поэтому я могу перейти туда, где были установлены файлы (верхний уровень каталога.egg), но я ищу более "стандартный" способ определить, где мой пакет установлен.
Вам может понадобиться что-то вроде функции pkgutil.get_data
.
Он будет считываться в ресурсах относительно __file__
если ваш пакет живет как стандартная структура каталогов пакетов python на диске, и я думаю, что он будет читать ресурсы из застрявшего яйца (хотя я сам не использовал его для себя).
does os.getcwd()
доставит вас в любом месте? (он возвращает "текущий рабочий каталог", как правило, тот, из которого вы проиграли основной скрипт)
что было бы неправильно при использовании __file__
? Если вы ищете какую-либо функцию более высокого уровня, она, вероятно, будет использовать подобный метод.
import os
d = os.path.dirname(__file__[:__file__.rindex(os.extsep+'egg')])
дает вам каталог; "перейти" к нему с помощью
os.startfile(d)