[Distutils] .exe for script in Windows doesn't work

P.J. Eby pje at telecommunity.com
Thu Jan 13 01:25:48 CET 2011

At 09:31 PM 1/12/2011 +0200, cool-RR wrote:
>Hi guys,
>I made a release of my project today, and now I see there's 
>something wrong with it.
>When you install it on Windows using the windows binaries (that I 
>made with `bdist_msi` under Python 2.7), the .exe scripts in the 
>"Scripts" folder don't work. When you launch them, nothing happens. 
>You can launch the associated *-script.pyw files and those *do* work.
>I investigated a little and possibly I figured it out. The shebang 
>line says "#!c:\Python27\pythonw.exe". This is the interpreter with 
>which I *created* the binaries. But why should it be the interpreter 
>with which the *user* works? The user could have 
>"c:\Python26\pythonw.exe" as his interpreter or 
>"c:\Programs\Python25\pythonw.exe" or "g:\Pypy\pypy.exe" as his interpreter.
>I tried editing the shebang line with notepad, and this caused the 
>exe files to start working! (Of course this is not a real solution, 
>I can't ask my users to do that.)
>Is this a bug in distribute?

It's a limitation of setuptools+bdist_msi - when you build a 
bdist_wininst, setuptools writes a generic #! line, but when you 
build a bdist_msi, it doesn't realize you're building a distribution.

>I'd appreciate if you can reply soon since I already started the 
>release process and I don't want to confuse users.

As a quick workaround, you could try setting sys.executable to 
'pythonw.exe' in your setup.py, *before* setuptools is imported, then 
build the .msi.

More information about the Distutils-SIG mailing list