<div dir="ltr"><div>Creo que no mencionas si usas setuptools o distutils.</div><div><br></div><div>Si estás escribiendo el script a mano, el shebang recomendado es: </div><div><span style="text-align:center;color:rgb(64,64,64);font-family:consolas,"andale mono wt","andale mono","lucida console","lucida sans typewriter","dejavu sans mono","bitstream vera sans mono","liberation mono","nimbus mono l",monaco,"courier new",courier,monospace;font-size:12px"><br></span></div><div><span style="text-align:center;color:rgb(64,64,64);font-family:consolas,"andale mono wt","andale mono","lucida console","lucida sans typewriter","dejavu sans mono","bitstream vera sans mono","liberation mono","nimbus mono l",monaco,"courier new",courier,monospace;font-size:12px">#!/usr/bin/env python</span></div><div><br></div><div>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 '<i>scripts</i>' de setuptools en setup.py. </div><div><br></div><div>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 '<i>console_scripts</i>'  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.<br></div><div><br></div><div>La documentación de ambas estrategias está en: </div><div><br></div><div><a href="http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html">http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html</a></div><div><br></div><div>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.</div><div><br></div><div>¡Un saludo!</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:08, Miguel González Álvarez <span dir="ltr"><<a href="mailto:migonzalvar@gmail.com" target="_blank">migonzalvar@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hola Luigi.<div><br></div><div>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.</div><div><br></div><div>En <a href="http://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation" target="_blank">http://setuptools.readthedocs.<wbr>io/en/latest/setuptools.html#<wbr>automatic-script-creation</a> pone:<br></div><div><br></div><div>> 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.</div><div><br></div><div>Un saludo.</div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">2016-11-14 15:49 GMT+01:00 Luigi Pirelli <span dir="ltr"><<a href="mailto:luipir@gmail.com" target="_blank">luipir@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">si esto si, por esto que pip hace una cosa rara (para mi) construiendo<br>
un .exe con un launcher<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/bl<wbr>ob/master/pip/_vendor/distlib/<wbr>scripts.py#L205</a><br>
<span class="m_-1188891896957834469im m_-1188891896957834469HOEnZb"><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/lu<wbr>igipirelli</a><br>
* Stackexchange: <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/u<wbr>sers/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-d<wbr>ata-and-business-intelligence/<wbr>mastering-qgis-second-edition</a><br>
******************************<wbr>******************************<wbr>******************************<wbr>********<br>
<br>
<br>
</span><div class="m_-1188891896957834469HOEnZb"><div class="m_-1188891896957834469h5">2016-11-14 15:33 GMT+01:00 Carlos Goce <<a href="mailto:carlosgoce@gmail.com" target="_blank">carlosgoce@gmail.com</a>>:<br>
> Por si te sirve de ayuda. Sólo te puedo comentar que me parece que 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" target="_blank">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>
>> <a href="https://github.com/pypa/pip/blob/master/pip/_vendor/distlib/scripts.py#L152" rel="noreferrer" target="_blank">https://github.com/pypa/pip/bl<wbr>ob/master/pip/_vendor/distlib/<wbr>scripts.py#L152</a><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/lu<wbr>igipirelli</a><br>
>> * Stackexchange: <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/u<wbr>sers/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-d<wbr>ata-and-business-intelligence/<wbr>mastering-qgis-second-edition</a><br>
>><br>
>> ******************************<wbr>******************************<wbr>******************************<wbr>********<br>
>><br>
>><br>
>> 2016-11-14 15:06 GMT+01:00 Luigi Pirelli <<a href="mailto:luipir@gmail.com" target="_blank">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 server<br>
>> > instalamos los modulos que necesitamos => los scripts instalados<br>
>> > tienen una stringa shebang echa asi'<br>
>> ><br>
>> > #!</path/to/python_in_build_se<wbr>rver><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 el<br>
>> > default (estoy en el codigo de distutils viendo que hace)<br>
>> ><br>
>> ><br>
>> > otra opción esn pyLauncher (<a href="https://www.python.org/dev/peps/pep-0397/" rel="noreferrer" target="_blank">https://www.python.org/dev/pe<wbr>ps/pep-0397/</a>)<br>
>> > pero bno se cuanto sea una solución adoptada en el mundo python... 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 setear<br>
>> > la stringa shebang?<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/lu<wbr>igipirelli</a><br>
>> > * Stackexchange: <a href="http://gis.stackexchange.com/users/19667/luigi-pirelli" rel="noreferrer" target="_blank">http://gis.stackexchange.com/u<wbr>sers/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-d<wbr>ata-and-business-intelligence/<wbr>mastering-qgis-second-edition</a><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" target="_blank">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/li<wbr>stinfo/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" target="_blank">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/li<wbr>stinfo/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" target="_blank">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/li<wbr>stinfo/vigo</a></div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><div class="m_-1188891896957834469gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Miguel González<div><a href="mailto:migonzalvar@gmail.com" target="_blank">migonzalvar@gmail.com</a><br><div>PGP ID: 0C63761BEEBD05D3</div></div></div></div>
</font></span></div>
<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></blockquote></div><br></div>