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

Nekmo contacto en nekmo.com
Lun Jun 6 10:08:46 EDT 2016


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/


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