python - mac - pip instalando archivos de datos en el lugar equivocado
pip install python 3 (1)
No use data_files
con rutas relativas. En realidad, no use data_files
en absoluto, a menos que se asegure de que las rutas de destino sean absolutas generadas correctamente en una plataforma cruzada en función de los valores codificados.
Use package_data
lugar:
setup(
# (...)
package_data={
"hackertray.data": [
"hacker-tray.png",
],
},
)
donde hackertray.data
es un paquete apropiado de python (es decir, es un directorio que contiene un archivo llamado __init__.py
) y hacker-tray.png
está justo al lado de __init__.py
.
Así es como debería verse:
.
|-- hackertray
| |-- __init__.py
| `-- data
| |-- __init__.py
| `-- hacker-tray.png
`-- setup.py
Puede obtener la ruta completa al archivo de imagen usando:
from pkg_resources import resource_filename
print os.path.abspath(resource_filename(''hackertray.data'', ''hacker-tray.png''))
Espero que eso ayude.
PD: Python <2.7 parece tener un error con respecto al empaquetado de los archivos enumerados en package_data
. Siempre asegúrese de tener un archivo de manifiesto si está utilizando algo más antiguo que Python 2.7 para el empaquetado. Consulte aquí para obtener más información: https://groups.google.com/d/msg/python-virtualenv/v5KJ78LP9Mo/OiBqMcYVFYAJ
La fuente del paquete está aquí
Estoy instalando el paquete del índice a través de:
easy_install hackertray
pip install hackertray
easy_install
instala images/hacker-tray.png
en la siguiente carpeta:
/usr/local/lib/python2.7/dist-packages/hackertray-1.8-py2.7.egg/images/
Mientras, pip
instala a:
/usr/local/images/
Mi setup.py es el siguiente:
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''])])
Mi archivo MANIFEST
es:
include images/hacker-tray.png