[PyVigo] "pip install" modificando shebang... es posible?

José Juan Montes jjmontes at gmail.com
Mon Nov 14 16:47:12 CET 2016


Creo que no mencionas si usas setuptools o distutils.

Si estás escribiendo el script a mano, el shebang recomendado es:

#!/usr/bin/env python

Para incluir el script en el paquete, y dejar que pip/setuptools lo instale
en un directorio adecuado que esté en el path, usarías la opción '*scripts*'
de setuptools en setup.py.

Por otra parte, como ha dicho Miguel, puedes apuntar directamente a una
función en uno de los módulos, y dejar que setuptols genere el script (que
debería funcionar en cualquier plataforma). Para ello, usarías la opción '
*console_scripts*'  en setup.py. En tu caso es posiblemente más
recomendable, ya que en mi opinión tienes más garantías de que el script
sea portable.

La documentación de ambas estrategias está en:

http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html

En ambos casos, setuptools instalará el script a un directorio en el path.
Por defecto, esto sería /usr/local/bin en Linux. Sin embargo, si estás
usando un virtualenv, setuptools lo instalará correctamente a env/bin/
(Linux) o a env/Scripts (Windows), que también están en el path cuando se
activa el virtualenv.

¡Un saludo!


Jose Juan Montes

El 14 de noviembre de 2016, 16:08, Miguel González Álvarez <
migonzalvar at gmail.com> escribió:

> Hola Luigi.
>
> Sé que no es tu pregunta pero no sé si se podría resolver tu problemática
> usando el `console_scripts entry point`. En Windows, setuptools crea un
> archivo .exe que ejecuta el script. Te aseguras así que se ejecuta dentro
> del entorno.
>
> En http://setuptools.readthedocs.io/en/latest/setuptools.html#
> automatic-script-creation pone:
>
> > On Windows, a set of foo.exe, bar.exe, and baz.exe launchers are
> created, alongside a set of foo.py, bar.py, and baz.pyw files. The .exe
> wrappers find and execute the right version of Python to run the .py or
> .pyw file.
>
> Un saludo.
>
> 2016-11-14 15:49 GMT+01:00 Luigi Pirelli <luipir at gmail.com>:
>
>> si esto si, por esto que pip hace una cosa rara (para mi) construiendo
>> un .exe con un launcher
>>
>> https://github.com/pypa/pip/blob/master/pip/_vendor/distlib/
>> scripts.py#L205
>>
>>
>> Luigi Pirelli
>>
>> ************************************************************
>> **************************************
>> * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com
>> * LinkedIn: https://www.linkedin.com/in/luigipirelli
>> * Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli
>> * GitHub: https://github.com/luipir
>> * Mastering QGIS 2nd Edition:
>> * https://www.packtpub.com/big-data-and-business-intelligence/
>> mastering-qgis-second-edition
>> ************************************************************
>> **************************************
>>
>>
>> 2016-11-14 15:33 GMT+01:00 Carlos Goce <carlosgoce at gmail.com>:
>> > Por si te sirve de ayuda. Sólo te puedo comentar que me parece que
>> Windows
>> > ignora completamente los Shebang.
>> >
>> >
>> > El 14/11/2016 3:30 p. m., "Luigi Pirelli" <luipir at gmail.com> escribió:
>> >>
>> >> hmmmm... con mucha probabilidad non es un problema de setup pero de
>> >> pip... creo que pip llega a crear el shebang de defauult aqui
>> >>
>> >>
>> >> https://github.com/pypa/pip/blob/master/pip/_vendor/distlib/
>> scripts.py#L152
>> >> Luigi Pirelli
>> >>
>> >>
>> >> ************************************************************
>> **************************************
>> >> * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com
>> >> * LinkedIn: https://www.linkedin.com/in/luigipirelli
>> >> * Stackexchange: http://gis.stackexchange.com/u
>> sers/19667/luigi-pirelli
>> >> * GitHub: https://github.com/luipir
>> >> * Mastering QGIS 2nd Edition:
>> >> *
>> >> https://www.packtpub.com/big-data-and-business-intelligence/
>> mastering-qgis-second-edition
>> >>
>> >> ************************************************************
>> **************************************
>> >>
>> >>
>> >> 2016-11-14 15:06 GMT+01:00 Luigi Pirelli <luipir at gmail.com>:
>> >> > Hola
>> >> >
>> >> > tenemos un problema de epaquetamiento de modulos python... y
>> >> > especificatamente esto nos pasa en win.
>> >> >
>> >> > nos preparamos un installer en un build server, y en este build
>> server
>> >> > instalamos los modulos que necesitamos => los scripts instalados
>> >> > tienen una stringa shebang echa asi'
>> >> >
>> >> > #!</path/to/python_in_build_server>
>> >> >
>> >> > esto es en general #!/user/bin/python o #!/user/local/bin/python
>> >> >
>> >> > pero a pasa la istalación en windows y usando un interprete python
>> >> > (embedded) nuesto #shebang tendría que ser
>> >> >
>> >> > #!</path/to/python_embedded>
>> >> > y esto puede cambiar en función de donde se instala el script.
>> >> >
>> >> > asi' que necesitariamos poner una stringa shebang que se la mas
>> >> > generica posible y que sea capaz de puntar al python embedded.
>> >> >
>> >> > en general sería guay solucionarlo con los build options de setup.py
>> >> > como en (el build server es winzozz)
>> >> > pip.exe install --global-option=build
>> >> > --global-option='--executable="/usr/bin/env python" ' <package name>
>> >> >
>> >> > pero el resultato siempre sale:
>> >> >
>> >> > #!python.exe
>> >> >
>> >> > asi' que puede ser que busca el executable y a no encontrarlo pone el
>> >> > default (estoy en el codigo de distutils viendo que hace)
>> >> >
>> >> >
>> >> > otra opción esn pyLauncher (https://www.python.org/dev/pe
>> ps/pep-0397/)
>> >> > pero bno se cuanto sea una solución adoptada en el mundo python... el
>> >> > desarrollo de pyLancher es parado hace tiempo y no veo muchos que lo
>> >> > utilizan (pero podría equivocarme)
>> >> >
>> >> > asi' venimos a la PREGUNTA
>> >> >
>> >> > hay una forma de pasar parametros a setup.py para que se pueda setear
>> >> > la stringa shebang?
>> >> >
>> >> > Luigi Pirelli
>> >> >
>> >> >
>> >> > ************************************************************
>> **************************************
>> >> > * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT
>> com
>> >> > * LinkedIn: https://www.linkedin.com/in/luigipirelli
>> >> > * Stackexchange: http://gis.stackexchange.com/u
>> sers/19667/luigi-pirelli
>> >> > * GitHub: https://github.com/luipir
>> >> > * Mastering QGIS 2nd Edition:
>> >> > *
>> >> > https://www.packtpub.com/big-data-and-business-intelligence/
>> mastering-qgis-second-edition
>> >> >
>> >> > ************************************************************
>> **************************************
>> >> _______________________________________________
>> >> Asociación Python España: http://www.es.python.org/
>> >> Python Vigo: http://www.python-vigo.es/
>> >> Vigo mailing list
>> >> Vigo at lists.es.python.org
>> >> https://lists.es.python.org/listinfo/vigo
>> >
>> >
>> > _______________________________________________
>> > Asociación Python España: http://www.es.python.org/
>> > Python Vigo: http://www.python-vigo.es/
>> > Vigo mailing list
>> > Vigo at lists.es.python.org
>> > https://lists.es.python.org/listinfo/vigo
>> _______________________________________________
>> Asociación Python España: http://www.es.python.org/
>> Python Vigo: http://www.python-vigo.es/
>> Vigo mailing list
>> Vigo at lists.es.python.org
>> https://lists.es.python.org/listinfo/vigo
>>
>
>
>
> --
> Miguel González
> migonzalvar at gmail.com
> PGP ID: 0C63761BEEBD05D3
>
> _______________________________________________
> Asociación Python España: http://www.es.python.org/
> Python Vigo: http://www.python-vigo.es/
> Vigo mailing list
> Vigo at lists.es.python.org
> https://lists.es.python.org/listinfo/vigo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.es.python.org/pipermail/vigo/attachments/20161114/3d6f2c10/attachment-0001.html>


More information about the Vigo mailing list