pkg_resources无法从Python egg中提取文件

3

我通过在这个文件夹中运行 python setup.py bdist_egg 命令创建了一个 Python 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\dist\下找到了名为SensorDisplay-0.1-py2.7.egg的文件。但是当我使用easy_install安装这个egg文件并运行文件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没有提取蛋文件,因为返回的文件名将蛋文件视为目录,而它不是。
2个回答

3
我找到了问题,我替换了


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 没有提取文件

1

egg文件是一个zip归档文件。您可以使用unzip命令查看其内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接