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

José Juan Montes jjmontes at gmail.com
Mon Nov 14 17:31:29 CET 2016


PIP no utiliza distutils.

PIP descomprime el paquete y llama a setup.py con un parámetro (install o
bdist_wheel) dependiendo de cómo haya sido empaquetado el proyecto.

setup.py importa setuptools o distutils, el desarrollador escoge cuál usar.
Lo normal es usar setuptools hoy en día.

PIP no genera ningún script ni escribe ningún shebang. Esto es tarea de
setuptools pero sólo cuando se usa "console_scripts". Cualquier otro script
que hayas escrito, o generado, se mantendrá intacto.

Saludos,


Jose Juan Montes

El 14 de noviembre de 2016, 16:58, Luigi Pirelli <luipir at gmail.com>
escribió:

> usamos pip que me parece usa distutils
>
> por ejemplo yo instalo mis modulos lado build server con pip y este
> escribe un shebang relacionado con python del build server => path
> malo cuando se hace el install final.
>
> me gustaria decir a pip de poner la version mas universal que como
> dices es "#!/usr/bin/env python" ya que dependera' de los valores de
> PATH sobre que tenemos control... pero esto no soy capaz de ponerlo.
>
> itentere' ver y probar las opciones de "console_scripts" gracias
>
>
> 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 16:47 GMT+01:00 José Juan Montes <jjmontes at gmail.com>:
> > 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/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: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/peps/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/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
> >>> >> >
> >>> >> >
> >>> >> > ************************************************************
> **************************************
> >>> >> _______________________________________________
> >>> >> 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
> >
> >
> >
> > _______________________________________________
> > 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.es.python.org/pipermail/vigo/attachments/20161114/f918fde5/attachment-0001.html>


More information about the Vigo mailing list