pip将数据文件安装到错误的p

2024-06-28 19:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

包的源是here

我通过以下方式从索引安装程序包:

easy_install hackertray
pip install hackertray

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

^{pr2}$

而,pip将其安装到:

/usr/local/images/

我的设置.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

Tags: installpip文件夹herepngusrlocaleasy
1条回答
网友
1楼 · 发布于 2024-06-28 19:19:46

不要将data_files与相对路径一起使用。实际上,完全不要使用data_files,除非您确保目标路径是以跨平台方式正确生成的绝对路径,而不是硬编码的值。在

使用package_data代替:

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

其中hackertray.data是一个正确的python包(即,是一个包含名为__init__.py的文件的目录,hacker-tray.png就在__init__.py的旁边。在

以下是它的外观:

^{pr2}$

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

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

我希望这有帮助。在

PS:Python<;2.7似乎有一个关于package_data中所列文件的打包问题。如果使用比Python2.7以前的版本进行打包,请始终确保有一个清单文件。更多信息请参见此处:https://groups.google.com/d/msg/python-virtualenv/v5KJ78LP9Mo/OiBqMcYVFYAJ

相关问题 更多 >