Как я могу найти дополнительные файлы, установленные с моим пакетом python, из включенного скрипта? - PullRequest
1 голос
/ 03 сентября 2011

Я собрал пакет python, который устанавливается с несколькими внешними файлами.Мне нужно иметь возможность читать эти файлы из сценария, который устанавливается вместе с пакетом.Я вижу, что я могу использовать __file__ внутри моего скрипта, и он возвращает что-то вроде этого:

/Library/Python/2.6/site-packages/M5-0.3.0-py2.6.egg/EGG-INFO/scripts/..

, и поэтому я могу перейти туда, где были установлены файлы (верхний уровень каталога .egg), но я ищу более «стандартный» способ определить, где установлен мой пакет.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2011

Возможно, вы захотите что-то вроде функции pkgutil.get_data.

Он будет считывать ресурсы, относящиеся к __file__, если ваш пакет живет как стандартная структура каталогов пакета python на диске, и я думаю, что он также будет считывать ресурсы из сжатого яйца (хотя яне использовал его для этого сам).

1 голос
/ 03 сентября 2011

os.getcwd() приближает вас?(возвращает «текущий рабочий каталог», обычно тот, из которого вы запускали основной скрипт)

что не так с использованием __file__?Если вы ищете какую-либо функцию более высокого уровня, она, вероятно, использует аналогичную технику.

import os
d = os.path.dirname(__file__[:__file__.rindex(os.extsep+'egg')])

дает вам каталог;«перейти» к нему с помощью

os.startfile(d)
...