pkg_resources не извлекает файлы из яиц Python

Я создал яйцо питона, запустив python setup.py bdist_egg из этой папки:

SensorDisplay/
--- sensor_display/
----- __init__.py
----- can.py
----- sensor_display.py
----- data/
--------- sensor_param.txt
--- setup.py

в файле setup.py, Я имею:

 package_data = {'' : ['*.txt']},
 scripts = ['sensor_display/sensor_display.py','sensor_display/can.py']

и в файле sensor_display.py:

PARAM_FILE = "data/sensor_display.txt"
param_file = pkg_resources.resource_filename("sensor_display", PARAM_FILE)
f = open(param_file,"r")

Я получаю тогда яйцо файл SensorDisplay-0.1-py2.7.egg в папке SensorDisplay\dist\, Тем не менее, когда я устанавливаю яйцо с easy_install и запускаю файл C:\Python27\Scripts\sensor_display.pyЯ получаю следующую ошибку:

IOError: [Errno 2] No such file or directory: 'C:\\Python27\\lib\\site-packages\
\sensordisplay-0.1-py2.7.egg\\EGG-INFO\\scripts\\data\\sensor_param.txt'

Похоже функция resource_filename не извлекает файл egg, потому что возвращаемое имя файла рассматривает файл egg как каталог, которым он не является.

2 ответа

Решение

Я нашел проблему, я заменил

PARAM_FILE = "data/sensor_display.txt"
param_file = pkg_resources.resource_filename("sensor_display", PARAM_FILE)

с

PARAM_FILE = "sensor_display/data/sensor_display.txt"
param_file = pkg_resources.resource_filename(pkg_resources.Requirement.parse("SensorDisplay"), PARAM_FILE)

смотрите также pkg_resources.resource_filename не извлекает файлы

Яичный файл - это zip-архив. Вы можете посмотреть содержимое, используя команду unzip.

Другие вопросы по тегам