包的来源在这里
我正在通过索引安装包:
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
不要使用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