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

Luigi Pirelli luipir at gmail.com
Tue Nov 15 11:13:27 CET 2016


hmmmm... seguro no me explique bien

no estoy hablando de scripts o modulos sobre que te tenemos "control",
por ejemplo yo necesito instalarme ipython (en el entorno de execution
de OSGeo4W) y esto se hace en el build server para que todo al final
estea paquietizado sin mas neceistad de red.

en el ipython.exe generado por pip, o lo que sea, hay enbedded un
launcher con un shebang con path absoluto al interprete y lo que
queria y decir a pip o pasar opciones a pip(y asi' a setuptool) para
que el shebang en python.exe sea #!/usr/bin/env python.

No se si me he explicado mejor o he complicado mas el asunto :)

Luigi Pirelli

ps. el mundo seria mas guasy sin winzozz y sin todas las
complicaciones que este introduce

**************************************************************************************************
* 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 17:31 GMT+01:00 José Juan Montes <jjmontes at gmail.com>:
> 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
>
>
>
> _______________________________________________
> 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


More information about the Vigo mailing list