安装时包括包数据

时间:2018-03-31 15:32:15

标签: python resources packaging

我在尝试安装我创建的Python包时遇到问题。 该包包括在包内使用的位图图像(用于OCR)。

我的文件夹结构如下:

mypackage
  - mypackage
     - media
        - template.bmp
  - module1.py
  - module2.py
  - etc...
- tests
- MANIFEST.in
- setup.py

template1.bmp由module1.py使用。

MANIFEST.in文件:

include mypackage/media/template.bmp

setup.py:

setup(
    ....
    packages = find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
    include_package_data=True,
    package_data={'mypackage': ['media/template.bmp']},
    ...
)

当我跑步时

python setup.py sdist

我可以验证媒体文件夹是否与.egg文件中的template.bmp一起包含在内。但是,使用

引用模块中的位图时
directory = os.path.dirname(os.path.abspath(__file__))
template_path = directory + '/media/template.bmp'
cv2.imread(template_path, 0)

我找不到文件错误。目录变量如下:

'C:\\anaconda3\\lib\\site-packages\\mypackage-0.0.1-py3.6.egg\\mypackage'

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

使用pkg_resources解决了我的问题。

template_path = pkg_resources.resource_filename(__name__, '/media/template.bmp')