librerias - ¿Cómo distribuir archivos e iconos `.desktop` para un paquete de Python en Gnome(con distutils o setuptools)?
instalar pip python windows (4)
En general, sí, todo es mejor que autotools al construir proyectos de Python.
Tengo buenas experiencias con setuptools hasta el momento. Sin embargo, instalar archivos en ubicaciones fijas no es una fortaleza de las herramientas de configuración; después de todo, no es algo para construir instaladores para aplicaciones de Python, sino distribuir bibliotecas de Python.
Para la instalación de archivos que no son archivos de datos de la aplicación (como imágenes, archivos UI, etc.) pero proporcionan integración en el sistema operativo, es mejor usar un formato de empaque real (como RPM o Deb).
Dicho esto, nada le impide tener el proceso de compilación basado en herramientas de configuración y un pequeño archivo make para instalar todo en el lugar que le corresponde.
Actualmente estoy usando las herramientas automáticas para construir / instalar y empaquetar un proyecto mío, pero realmente me gustaría moverme a algo que se sienta más "pitónico".
Mi proyecto consiste en dos scripts, un módulo, dos descripciones de GUI de glade y dos archivos .desktop. Actualmente es un proyecto python puro, aunque es probable que cambie pronto.
Al mirar setuptools, puedo ver fácilmente cómo tratar con todo, excepto los archivos .desktop; tienen que terminar en un directorio específico para que Gnome pueda encontrarlos.
¿El uso de distuils / setuptools es una buena idea para empezar?
Puede intentar usar python-distutils-extra . El módulo DistUtilsExtra.auto
admite automáticamente archivos .desktop, así como archivos Glade / GtkBuilder .ui, módulos y scripts de Python, archivos de datos misceláneos, etc.
Debería funcionar tanto con Distutils como con Setuptools.
Me las arreglé para hacer que esto funcione, pero me parece un poco más como una solución alternativa .
No sé cuál es la forma preferida de manejar esto ...
setup.py
el siguiente archivo setup.py
(la versión completa está aquí ):
from setuptools import setup
setup(
# ...
data_files=[
(''share/icons/hicolor/scalable/apps'', [''data/mypackage.svg'']),
(''share/applications'', [''data/mypackage.desktop''])
],
entry_points={
''console_scripts'': [''startit=mypackage.cli:run'']
}
)
El script de inicio a través de entry_points
funciona. Pero los data_files
colocaron en un archivo huevo y no en las carpetas especificadas, por lo que no pueden accederse desde el escritorio.
Para setup.cfg
esto, utilicé el siguiente archivo setup.cfg
:
[install]
single-version-externally-managed=1
record=install.txt
Esto funciona. Ambos archivos de datos se crean en el lugar correcto y el archivo .desktop
es reconocido por Gnome.
Creé https://pypi.python.org/pypi/install-freedesktop . Crea archivos .desktop automáticamente para los puntos de entrada gui_scripts, que se pueden personalizar a través de un argumento de configuración, y admite la instalación de --user
y de todo el sistema. Comparado con DistUtilsExtra
, es más estrecho en alcance y en mi humilde opinión más pitónico (explícito es mejor que implícito).