将数据文件安装到错误的位置

 海角处回忆_417 发布于 2023-02-13 17:47

包的来源在这里

我正在通过索引安装包:

easy_install hackertray
pip install hackertray

easy_install安装images/hacker-tray.png到以下文件夹:

/usr/local/lib/python2.7/dist-packages/hackertray-1.8-py2.7.egg/images/

同时,pip将其安装到:

/usr/local/images/

我的setup.py如下:

from setuptools import setup
setup(name='hackertray',
      version='1.8',
      description='Hacker News app that sits in your System Tray',
      packages=['hackertray'],
      data_files=[('images', ['images/hacker-tray.png'])])

我的MANIFEST档案是:

include images/hacker-tray.png

Burak Arslan.. 12

不要使用data_files相对路径.实际上,根本不要使用data_files,除非您确保目标路径是以跨平台方式正确生成的硬编码值的绝对路径.

package_data改为使用:

setup(
    # (...)
    package_data={
        "hackertray.data": [
            "hacker-tray.png",
        ],
    },
)

哪里hackertray.data是一个合适的python包(即包含一个名为的文件的目录__init__.py),hacker-tray.png紧挨着 __init__.py.

这是它应该看起来的样子:

.
|-- hackertray
|   |-- __init__.py
|   `-- data
|       |-- __init__.py
|       `-- hacker-tray.png
`-- setup.py

您可以使用以下命令获取图像文件的完整路径:

from pkg_resources import resource_filename
print os.path.abspath(resource_filename('hackertray.data', 'hacker-tray.png'))

我希望有所帮助.

PS:Python <2.7似乎有关于列出的文件打包的错误package_data.如果您使用比Python 2.7更早的东西进行打包,请始终确保拥有清单文件.有关详细信息,请参阅此处:https://groups.google.com/d/msg/python-virtualenv/v5KJ78LP9Mo/OiBqMcYVFYAJ

1 个回答
  • 不要使用data_files相对路径.实际上,根本不要使用data_files,除非您确保目标路径是以跨平台方式正确生成的硬编码值的绝对路径.

    package_data改为使用:

    setup(
        # (...)
        package_data={
            "hackertray.data": [
                "hacker-tray.png",
            ],
        },
    )
    

    哪里hackertray.data是一个合适的python包(即包含一个名为的文件的目录__init__.py),hacker-tray.png紧挨着 __init__.py.

    这是它应该看起来的样子:

    .
    |-- hackertray
    |   |-- __init__.py
    |   `-- data
    |       |-- __init__.py
    |       `-- hacker-tray.png
    `-- setup.py
    

    您可以使用以下命令获取图像文件的完整路径:

    from pkg_resources import resource_filename
    print os.path.abspath(resource_filename('hackertray.data', 'hacker-tray.png'))
    

    我希望有所帮助.

    PS:Python <2.7似乎有关于列出的文件打包的错误package_data.如果您使用比Python 2.7更早的东西进行打包,请始终确保拥有清单文件.有关详细信息,请参阅此处:https://groups.google.com/d/msg/python-virtualenv/v5KJ78LP9Mo/OiBqMcYVFYAJ

    2023-02-13 17:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有