[Python-es] Post-install en setup.py con Wheel

Juan Luis Cano juanlu001 en gmail.com
Lun Jun 6 10:22:56 EDT 2016


La verdad, si yo fuera tú lo dividiría en dos pasos, te quitarás de
bastantes problemas...

Por otro lado: veo que pones `sudo pip install`. Yo lo evito como la peste
porque tiene consecuencias indeseadas y conduce a mensajes de error
rarísimos, pero entiendo por la naturaleza de tu biblioteca que tiene que
ser así. ¿No has pensado mejor que otra gente empaquete tu biblioteca para
cada distribución de Linux?

2016-06-06 16:08 GMT+02:00 Nekmo <contacto en nekmo.com>:

> No te preocupes, sé perfectamente que está desaconsejado y soy
> consciente de los riesgos y problemas :)
>
> Según entiendo, lo que propones es hacer esto, ¿no?
>
>
> class FakeBdistWheel(Command):
>     description = 'Faked Wheel'
>     user_options = []
>
>     def initialize_options(self):
>         pass
>
>     def finalize_options(self):
>         pass
>
>     def run(self):
>         print('Sorry, but wheel is not supported for this package!')
>
>
> setup(
>     cmdclass={'install': SystemInstallCommand, 'bdist_wheel':
> FakeBdistWheel},
>     ...
>
>
> Como dices, el paquete se instala correctamente, pero el mensaje de
> error hace pensarse a la gente que ha habido un error, y me mandan
> emails pidiéndome ayuda :(
>
> Mi intención es que esto sea algo temporal, hasta que tenga paquetes
> para las principales distribuciones. Pero claro, como es algo tedioso
> y pesado, hasta ese momento prefiero dejarle el trabajo sucio al
> gestor de paquetes de Python. Estoy barajando también la opción de
> dividir el proceso de instalación en 2 pasos:
>
> sudo pip install simple-monitor-alert && sudo python -m
> simple_monitor_alert.install
>
> Saludos, ¡y gracias!
>
>
> Un cordial saludo:
> -- Nekmo.
>
> Sitio web: http://nekmo.com
> Dirección de contacto: contacto en nekmo.com
> XMPP/Jabber: contacto en nekmo.com
> Google+: Nekmo Com
>
>
> El día 6 de junio de 2016, 6:41, Juan Luis Cano <juanlu001 en gmail.com>
> escribió:
> > En realidad, lo que ocurre es que se intenta construir un wheel por cada
> > paquete que estás instalando y sus dependencias pero este paso falla por
> lo
> > que has comentado. Sin embargo, a juzgar por el log todo se instala
> > correctamente y en principio deberías poder importar el paquete con
> > normalidad. De hecho acabo de probarlo y me funciona:
> >
> > $ pip install simple-monitor-alert
> > # Mensaje de error al crear wheel, instalación exitosa
> > $ python
> >>>> import simple_monitor_alert
> >>>> simple_monitor_alert.__version__
> > '0.2.3'
> >
> > Lo que puedes hacer es sobreescribir el comando bdist_wheel para impedir
> su
> > ejecución, mostrar un mensaje o simplemente no hacer nada.
> >
> > En principio los scripts de post-instalación dejarán de ser un hack
> cuando
> > se termine la PEP 426:
> >
> > https://www.python.org/dev/peps/pep-0426/
> >
> > Mientras tanto, el consenso de la comunidad es que «lo estás haciendo
> mal».
> >
> > Espero que te sirva, un saludo:
> >
> > Juanlu
> >
> >
> >
> > On 2016-06-06 03:54, Nekmo wrote:
> >>
> >> Buenas a todos.
> >>
> >> Tengo un paquete que requiere de pasos adicionales para su instalación
> >> en el sistema, ya que no es una biblioteca sino una aplicación. Entre
> >> otras cosas hace:
> >> - Instalar servicios (init, systemd).
> >> - Actualizar los archivos de configuración, si se necesitase.
> >> - Crear enlaces simbólicos.
> >> - Crear un usuario del sistema si no existiese
> >> - Dar los permisos correctos a los directorios correspondientes.
> >>
> >> Todo esto funciona muy bien a día de hoy, y me permite tener un
> >> paquete instalable en cualquier distribución de forma fácil y
> >> amigable. Además, si el paquete es instalado en modo usuario, estos
> >> pasos se saltan mostrando una advertencia al usuario.
> >>
> >> El problema llega con Wheel: mis usuarios se quejan porque reciben un
> >> mensaje de error de Wheel (el cual no uso) durante la instalación,
> >> aunque el programa se instale perfectamente.
> >>
> >> https://github.com/Nekmo/simple-monitor-alert/issues/24
> >>
> >>
> >> ---------------------
> >>    Checking .pth file support in build/bdist.linux-x86_64/wheel/
> >>    /usr/bin/python -E -c pass
> >>    TEST FAILED: build/bdist.linux-x86_64/wheel/ does NOT support .pth
> >> files
> >>    error: bad install directory or PYTHONPATH
> >>
> >>    You are attempting to install a package to a directory that is not
> >>    on PYTHONPATH and which Python does not read ".pth" files from.  The
> >>    installation directory you specified (via --install-dir, --prefix, or
> >>    the distutils default setting) was:
> >>
> >>        build/bdist.linux-x86_64/wheel/
> >>
> >>    and your PYTHONPATH environment variable currently contains:
> >>
> >>        ''
> >>
> >>    Here are some of your options for correcting the problem:
> >>
> >>    * You can choose a different installation directory, i.e., one that
> is
> >>      on PYTHONPATH or supports .pth files
> >>
> >>    * You can add the installation directory to the PYTHONPATH
> environment
> >>      variable.  (It must then also be on PYTHONPATH whenever you run
> >>      Python and want to use the package(s) you are installing.)
> >>
> >>    * You can set up the installation directory to support ".pth" files
> by
> >>      using one of the approaches described here:
> >>
> >>
> >>
> >>
> https://pythonhosted.org/setuptools/easy_install.html#custom-installation-locations
> >>
> >>    Please make the appropriate changes for your system and try again.
> >> --------------------------
> >>
> >> El problema es que, Wheel se promociona como una solución que
> >> justamente impide ejecutar comandos durante la instalación
> >> (¡bieen...!) y no sé si conseguiré solventar mi problema usando Wheel.
> >> Tal vez lo que necesite es ocultar este mensaje de error.
> >> _______________________________________________
> >> Python-es mailing list
> >> Python-es en python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> >> FAQ: http://python-es-faq.wikidot.com/
> >
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > https://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Juanlu
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20160606/39cab128/attachment.html>


Más información sobre la lista de distribución Python-es