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

Juan Luis Cano juanlu001 en gmail.com
Lun Jun 6 11:42:44 EDT 2016


Para eso estamos :) No suelo tener tiempo para contestar dudas en la lista,
pero el tema de pip me toca la fibra sensible xD

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

> Oh, que otra gente hiciese el trabajo por mí estaría genial... pero me
> temo que mi proyecto no es lo bastante conocido ni usado como para
> ello xD
>
> Yo también evito siempre que puedo utilizar "sudo pip install" sobre
> todo porque luego las dependencias instaladas pueden dar problemas con
> las del sistema, pero como dices, no hay mucha más solución debido a
> la naturaleza del proyecto. En otros proyectos intento incluso
> incentivar que la gente lo instale en un virtualenv, pero aquí es
> imposible.
>
> Ante todo, 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, 16:22, Juan Luis Cano <juanlu001 en gmail.com>
> escribió:
> > 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
> >
> > _______________________________________________
> > 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/3a345d3d/attachment.html>


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