title: Ways to invoke python and Spyder on OSX
body: <p>I recently bought a MacBook and install Python on it via Anaconda. Here's the version information:</p>
  
  <pre><code>Python 2.7.6 |Anaconda 1.8.0 (x86_64)| (default, Nov 11 2013, 10:49:09) 
  [GCC 4.0.1 (Apple Inc. build 5493)] on darwin
  </code></pre>
  
  <p>I'd like to be able do all of the following:</p>
  
  <ol>
  <li>Launch Spyder without having to go through the Launcher application (say, by typing things into Spotlight and Quicksilver)</li>
  <li>Run Python code from the Finder, presumably by double-clicking on my .py file or by selecting and and pressing Cmd-O</li>
  <li>Run Python code by typing a Python script's name into Quicksilver (as if it was a regular program)</li>
  </ol>
  
  <p>Here's what I've tried:</p>
  
  <ol>
  <li>(nothing; no ideas here)</li>
  <li>I've associated .py files with /Users/kuzzooroo/anaconda/python.app/Contents/MacOS/python and made them executable (chmod u+x). When I try to run the application never launches and I don't get an error message (don't know where to look)</li>
  <li>Made the files executable and tried to run them from Spotlight. Same result as #2.</li>
  </ol>
  
  <p>Here's what I <em>can</em> do:</p>
  
  <ul>
  <li>Run my code from a Terminal window, if I have the right shebang on top and have made the file executable</li>
  <li>Generate an application using py2app. Unfortunately, this method suffers the following drawbacks:
  <ul>
  <li>I frequently modify my scripts and would prefer not to have to run py2app every time I do</li>
  <li>Even for a trivial script the resulting app is 7 MB</li>
  <li>To run the application in some contexts I have to dig around in the bundle to find the actual "Unix Executable File" and run that instead</li>
  </ul></li>
  </ul>
  
  <p>Once I have this working, I'm interested in doing the following:<br>
  A. Controlling which scripts create a console window when they run and which do not<br>
  B. Controlling whether the resulting console window disappears when the script completes or waits around for the user (me) to close it<br>
  However, I suspect it may be easy to figure out how to do these (or whether it's possible) once I've figured out how I'm going to invoke my scripts in the first place.</p>