<div dir="ltr">PIP no utiliza distutils.<div><br></div><div>PIP descomprime el paquete y llama a setup.py con un parámetro (install o <span style="color:rgb(36,39,41);font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;font-size:13px;white-space:pre-wrap;background-color:rgb(239,240,241)">bdist_wheel</span>) dependiendo de cómo haya sido empaquetado el proyecto.</div><div><br></div><div>setup.py importa setuptools o distutils, el desarrollador escoge cuál usar. Lo normal es usar setuptools hoy en día.</div><div><br></div><div>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.</div><div><br></div><div>Saludos,</div><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">Jose Juan Montes</div></div>
<br><div class="gmail_quote">El 14 de noviembre de 2016, 16:58, Luigi Pirelli <span dir="ltr"><<a href="mailto:luipir@gmail.com" target="_blank">luipir@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">usamos pip que me parece usa distutils<br>
<br>
por ejemplo yo instalo mis modulos lado build server con pip y este<br>
escribe un shebang relacionado con python del build server => path<br>
malo cuando se hace el install final.<br>
<br>
me gustaria decir a pip de poner la version mas universal que como<br>
dices es "#!/usr/bin/env python" ya que dependera' de los valores de<br>
PATH sobre que tenemos control... pero esto no soy capaz de ponerlo.<br>
<br>
itentere' ver y probar las opciones de "console_scripts" gracias<br>
<span class="im HOEnZb"><br>
<br>
Luigi Pirelli<br>
<br>
******************************<wbr>******************************<wbr>******************************<wbr>********<br>
* Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com<br>
* LinkedIn: <a href="https://www.linkedin.com/in/luigipirelli" rel="noreferrer" target="_blank">https://www.linkedin.com/in/<wbr>luigipirelli</a><br>
* Stackexchange: <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/<wbr>users/19667/luigi-pirelli</a><br>
* GitHub: <a href="https://github.com/luipir" rel="noreferrer" target="_blank">https://github.com/luipir</a><br>
* Mastering QGIS 2nd Edition:<br>
* <a href="https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition" rel="noreferrer" target="_blank">https://www.packtpub.com/big-<wbr>data-and-business-<wbr>intelligence/mastering-qgis-<wbr>second-edition</a><br>
******************************<wbr>******************************<wbr>******************************<wbr>********<br>
<br>
<br>
</span><div class="HOEnZb"><div class="h5">2016-11-14 16:47 GMT+01:00 José Juan Montes <<a href="mailto:jjmontes@gmail.com">jjmontes@gmail.com</a>>:<br>
> Creo que no mencionas si usas setuptools o distutils.<br>
><br>
> Si estás escribiendo el script a mano, el shebang recomendado es:<br>
><br>
> #!/usr/bin/env python<br>
><br>
> Para incluir el script en el paquete, y dejar que pip/setuptools lo instale<br>
> en un directorio adecuado que esté en el path, usarías la opción 'scripts'<br>
> de setuptools en setup.py.<br>
><br>
> Por otra parte, como ha dicho Miguel, puedes apuntar directamente a una<br>
> función en uno de los módulos, y dejar que setuptols genere el script (que<br>
> debería funcionar en cualquier plataforma). Para ello, usarías la opción<br>
> 'console_scripts'  en setup.py. En tu caso es posiblemente más recomendable,<br>
> ya que en mi opinión tienes más garantías de que el script sea portable.<br>
><br>
> La documentación de ambas estrategias está en:<br>
><br>
> <a href="http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html" rel="noreferrer" target="_blank">http://python-packaging.<wbr>readthedocs.io/en/latest/<wbr>command-line-scripts.html</a><br>
><br>
> En ambos casos, setuptools instalará el script a un directorio en el path.<br>
> Por defecto, esto sería /usr/local/bin en Linux. Sin embargo, si estás<br>
> usando un virtualenv, setuptools lo instalará correctamente a env/bin/<br>
> (Linux) o a env/Scripts (Windows), que también están en el path cuando se<br>
> activa el virtualenv.<br>
><br>
> ¡Un saludo!<br>
><br>
><br>
> Jose Juan Montes<br>
><br>
> El 14 de noviembre de 2016, 16:08, Miguel González Álvarez<br>
> <<a href="mailto:migonzalvar@gmail.com">migonzalvar@gmail.com</a>> escribió:<br>
>><br>
>> Hola Luigi.<br>
>><br>
>> Sé que no es tu pregunta pero no sé si se podría resolver tu problemática<br>
>> usando el `console_scripts entry point`. En Windows, setuptools crea un<br>
>> archivo .exe que ejecuta el script. Te aseguras así que se ejecuta dentro<br>
>> del entorno.<br>
>><br>
>> En<br>
>> <a href="http://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation" rel="noreferrer" target="_blank">http://setuptools.readthedocs.<wbr>io/en/latest/setuptools.html#<wbr>automatic-script-creation</a><br>
>> pone:<br>
>><br>
>> > On Windows, a set of foo.exe, bar.exe, and baz.exe launchers are<br>
>> > created, alongside a set of foo.py, bar.py, and baz.pyw files. The .exe<br>
>> > wrappers find and execute the right version of Python to run the .py or .pyw<br>
>> > file.<br>
>><br>
>> Un saludo.<br>
>><br>
>> 2016-11-14 15:49 GMT+01:00 Luigi Pirelli <<a href="mailto:luipir@gmail.com">luipir@gmail.com</a>>:<br>
>>><br>
>>> si esto si, por esto que pip hace una cosa rara (para mi) construiendo<br>
>>> un .exe con un launcher<br>
>>><br>
>>><br>
>>> <a href="https://github.com/pypa/pip/blob/master/pip/_vendor/distlib/scripts.py#L205" rel="noreferrer" target="_blank">https://github.com/pypa/pip/<wbr>blob/master/pip/_vendor/<wbr>distlib/scripts.py#L205</a><br>
>>><br>
>>><br>
>>> Luigi Pirelli<br>
>>><br>
>>><br>
>>> ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>>> * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com<br>
>>> * LinkedIn: <a href="https://www.linkedin.com/in/luigipirelli" rel="noreferrer" target="_blank">https://www.linkedin.com/in/<wbr>luigipirelli</a><br>
>>> * Stackexchange: <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/<wbr>users/19667/luigi-pirelli</a><br>
>>> * GitHub: <a href="https://github.com/luipir" rel="noreferrer" target="_blank">https://github.com/luipir</a><br>
>>> * Mastering QGIS 2nd Edition:<br>
>>> *<br>
>>> <a href="https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition" rel="noreferrer" target="_blank">https://www.packtpub.com/big-<wbr>data-and-business-<wbr>intelligence/mastering-qgis-<wbr>second-edition</a><br>
>>><br>
>>> ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>>><br>
>>><br>
>>> 2016-11-14 15:33 GMT+01:00 Carlos Goce <<a href="mailto:carlosgoce@gmail.com">carlosgoce@gmail.com</a>>:<br>
>>> > Por si te sirve de ayuda. Sólo te puedo comentar que me parece que<br>
>>> > Windows<br>
>>> > ignora completamente los Shebang.<br>
>>> ><br>
>>> ><br>
>>> > El 14/11/2016 3:30 p. m., "Luigi Pirelli" <<a href="mailto:luipir@gmail.com">luipir@gmail.com</a>> escribió:<br>
>>> >><br>
>>> >> hmmmm... con mucha probabilidad non es un problema de setup pero de<br>
>>> >> pip... creo que pip llega a crear el shebang de defauult aqui<br>
>>> >><br>
>>> >><br>
>>> >><br>
>>> >> <a href="https://github.com/pypa/pip/blob/master/pip/_vendor/distlib/scripts.py#L152" rel="noreferrer" target="_blank">https://github.com/pypa/pip/<wbr>blob/master/pip/_vendor/<wbr>distlib/scripts.py#L152</a><br>
>>> >> Luigi Pirelli<br>
>>> >><br>
>>> >><br>
>>> >><br>
>>> >> ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>>> >> * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com<br>
>>> >> * LinkedIn: <a href="https://www.linkedin.com/in/luigipirelli" rel="noreferrer" target="_blank">https://www.linkedin.com/in/<wbr>luigipirelli</a><br>
>>> >> * Stackexchange:<br>
>>> >> <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/<wbr>users/19667/luigi-pirelli</a><br>
>>> >> * GitHub: <a href="https://github.com/luipir" rel="noreferrer" target="_blank">https://github.com/luipir</a><br>
>>> >> * Mastering QGIS 2nd Edition:<br>
>>> >> *<br>
>>> >><br>
>>> >> <a href="https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition" rel="noreferrer" target="_blank">https://www.packtpub.com/big-<wbr>data-and-business-<wbr>intelligence/mastering-qgis-<wbr>second-edition</a><br>
>>> >><br>
>>> >><br>
>>> >> ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>>> >><br>
>>> >><br>
>>> >> 2016-11-14 15:06 GMT+01:00 Luigi Pirelli <<a href="mailto:luipir@gmail.com">luipir@gmail.com</a>>:<br>
>>> >> > Hola<br>
>>> >> ><br>
>>> >> > tenemos un problema de epaquetamiento de modulos python... y<br>
>>> >> > especificatamente esto nos pasa en win.<br>
>>> >> ><br>
>>> >> > nos preparamos un installer en un build server, y en este build<br>
>>> >> > server<br>
>>> >> > instalamos los modulos que necesitamos => los scripts instalados<br>
>>> >> > tienen una stringa shebang echa asi'<br>
>>> >> ><br>
>>> >> > #!</path/to/python_in_build_<wbr>server><br>
>>> >> ><br>
>>> >> > esto es en general #!/user/bin/python o #!/user/local/bin/python<br>
>>> >> ><br>
>>> >> > pero a pasa la istalación en windows y usando un interprete python<br>
>>> >> > (embedded) nuesto #shebang tendría que ser<br>
>>> >> ><br>
>>> >> > #!</path/to/python_embedded><br>
>>> >> > y esto puede cambiar en función de donde se instala el script.<br>
>>> >> ><br>
>>> >> > asi' que necesitariamos poner una stringa shebang que se la mas<br>
>>> >> > generica posible y que sea capaz de puntar al python embedded.<br>
>>> >> ><br>
>>> >> > en general sería guay solucionarlo con los build options de setup.py<br>
>>> >> > como en (el build server es winzozz)<br>
>>> >> > pip.exe install --global-option=build<br>
>>> >> > --global-option='--executable=<wbr>"/usr/bin/env python" ' <package name><br>
>>> >> ><br>
>>> >> > pero el resultato siempre sale:<br>
>>> >> ><br>
>>> >> > #!python.exe<br>
>>> >> ><br>
>>> >> > asi' que puede ser que busca el executable y a no encontrarlo pone<br>
>>> >> > el<br>
>>> >> > default (estoy en el codigo de distutils viendo que hace)<br>
>>> >> ><br>
>>> >> ><br>
>>> >> > otra opción esn pyLauncher<br>
>>> >> > (<a href="https://www.python.org/dev/peps/pep-0397/" rel="noreferrer" target="_blank">https://www.python.org/dev/<wbr>peps/pep-0397/</a>)<br>
>>> >> > pero bno se cuanto sea una solución adoptada en el mundo python...<br>
>>> >> > el<br>
>>> >> > desarrollo de pyLancher es parado hace tiempo y no veo muchos que lo<br>
>>> >> > utilizan (pero podría equivocarme)<br>
>>> >> ><br>
>>> >> > asi' venimos a la PREGUNTA<br>
>>> >> ><br>
>>> >> > hay una forma de pasar parametros a setup.py para que se pueda<br>
>>> >> > setear<br>
>>> >> > la stringa shebang?<br>
>>> >> ><br>
>>> >> > Luigi Pirelli<br>
>>> >> ><br>
>>> >> ><br>
>>> >> ><br>
>>> >> > ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>>> >> > * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT<br>
>>> >> > com<br>
>>> >> > * LinkedIn: <a href="https://www.linkedin.com/in/luigipirelli" rel="noreferrer" target="_blank">https://www.linkedin.com/in/<wbr>luigipirelli</a><br>
>>> >> > * Stackexchange:<br>
>>> >> > <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/<wbr>users/19667/luigi-pirelli</a><br>
>>> >> > * GitHub: <a href="https://github.com/luipir" rel="noreferrer" target="_blank">https://github.com/luipir</a><br>
>>> >> > * Mastering QGIS 2nd Edition:<br>
>>> >> > *<br>
>>> >> ><br>
>>> >> > <a href="https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition" rel="noreferrer" target="_blank">https://www.packtpub.com/big-<wbr>data-and-business-<wbr>intelligence/mastering-qgis-<wbr>second-edition</a><br>
>>> >> ><br>
>>> >> ><br>
>>> >> > ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>>> >> ______________________________<wbr>_________________<br>
>>> >> Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer" target="_blank">http://www.es.python.org/</a><br>
>>> >> Python Vigo: <a href="http://www.python-vigo.es/" rel="noreferrer" target="_blank">http://www.python-vigo.es/</a><br>
>>> >> Vigo mailing list<br>
>>> >> <a href="mailto:Vigo@lists.es.python.org">Vigo@lists.es.python.org</a><br>
>>> >> <a href="https://lists.es.python.org/listinfo/vigo" rel="noreferrer" target="_blank">https://lists.es.python.org/<wbr>listinfo/vigo</a><br>
>>> ><br>
>>> ><br>
>>> > ______________________________<wbr>_________________<br>
>>> > Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer" target="_blank">http://www.es.python.org/</a><br>
>>> > Python Vigo: <a href="http://www.python-vigo.es/" rel="noreferrer" target="_blank">http://www.python-vigo.es/</a><br>
>>> > Vigo mailing list<br>
>>> > <a href="mailto:Vigo@lists.es.python.org">Vigo@lists.es.python.org</a><br>
>>> > <a href="https://lists.es.python.org/listinfo/vigo" rel="noreferrer" target="_blank">https://lists.es.python.org/<wbr>listinfo/vigo</a><br>
>>> ______________________________<wbr>_________________<br>
>>> Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer" target="_blank">http://www.es.python.org/</a><br>
>>> Python Vigo: <a href="http://www.python-vigo.es/" rel="noreferrer" target="_blank">http://www.python-vigo.es/</a><br>
>>> Vigo mailing list<br>
>>> <a href="mailto:Vigo@lists.es.python.org">Vigo@lists.es.python.org</a><br>
>>> <a href="https://lists.es.python.org/listinfo/vigo" rel="noreferrer" target="_blank">https://lists.es.python.org/<wbr>listinfo/vigo</a><br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Miguel González<br>
>> <a href="mailto:migonzalvar@gmail.com">migonzalvar@gmail.com</a><br>
>> PGP ID: 0C63761BEEBD05D3<br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer" target="_blank">http://www.es.python.org/</a><br>
>> Python Vigo: <a href="http://www.python-vigo.es/" rel="noreferrer" target="_blank">http://www.python-vigo.es/</a><br>
>> Vigo mailing list<br>
>> <a href="mailto:Vigo@lists.es.python.org">Vigo@lists.es.python.org</a><br>
>> <a href="https://lists.es.python.org/listinfo/vigo" rel="noreferrer" target="_blank">https://lists.es.python.org/<wbr>listinfo/vigo</a><br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer" target="_blank">http://www.es.python.org/</a><br>
> Python Vigo: <a href="http://www.python-vigo.es/" rel="noreferrer" target="_blank">http://www.python-vigo.es/</a><br>
> Vigo mailing list<br>
> <a href="mailto:Vigo@lists.es.python.org">Vigo@lists.es.python.org</a><br>
> <a href="https://lists.es.python.org/listinfo/vigo" rel="noreferrer" target="_blank">https://lists.es.python.org/<wbr>listinfo/vigo</a><br>
______________________________<wbr>_________________<br>
Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer" target="_blank">http://www.es.python.org/</a><br>
Python Vigo: <a href="http://www.python-vigo.es/" rel="noreferrer" target="_blank">http://www.python-vigo.es/</a><br>
Vigo mailing list<br>
<a href="mailto:Vigo@lists.es.python.org">Vigo@lists.es.python.org</a><br>
<a href="https://lists.es.python.org/listinfo/vigo" rel="noreferrer" target="_blank">https://lists.es.python.org/<wbr>listinfo/vigo</a></div></div></blockquote></div><br></div>