Running scripts in pythonw from Xcode

The previous tip works fine if your Python script is just a command-line script that doesn't require any interaction with the WindowServer. However, if your script needs to be run with pythonw normally in order to interact with the user in a GUI fashion, it won't work. Xcode won't let you select /usr/bin/pythonw as the executable because it is just a shell script, not a binary executable. To work around this, use /bin/sh as the executable and pass pythonw and your python file as arguments to sh:

Choose Project->New Custom Executable
Type /bin/sh as the Executable Path
Double-click on the new executable
Click the plus button under Arguments and type:
/usr/bin/pythonw /path/to/your/script/here.py

Update: Bob has pointed out in a comment that you can use the executable that the pythonw script runs directly. I have tested it and it seems to work for me. Set the executable path to:


And the arguments to the path of your script. Thanks Bob!


Bob Ippolito said...

Why not use /System/Library/Frameworks/Python.framework/Versions/2.3/Resources/Python.app/Contents/MacOS/Python? I'm not entirely sure gdb would work properly if you did it the sh way (but it might).

Mark Eichin said...

Much to my surprise, simply using
#!/usr/bin/env /usr/bin/pythonw
(without any file-specific arguments) is enough to make a pythonw-needing script work. I stumbled across this while experimenting with your suggestion here...