requests mac python pip packaging easy-install package-managers

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