title: Exec format error: apache + mod_wsgi on Mac OS X Lion
body: <p>I am trying to set up a web development environment using Python 2.7, apache, mod_wsgi, and web2py on an iMac running Lion (Mac OS X 10.7.3).</p>
  
  <p>I downloaded and installed mod_wsgi v. 3.3 (./configure; make; sudo make install)</p>
  
  <p>It installed in /usr/libexec/apache2. Everything looks sensible:</p>
  
  <pre><code>07:49 PM ~ [541] otool -L /usr/libexec/apache2/mod_wsgi.so 
  /usr/libexec/apache2/mod_wsgi.so:
      /Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
      /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.19.0)
  
  07:55 PM ~ [542] file /usr/libexec/apache2/mod_wsgi.so 
  /usr/libexec/apache2/mod_wsgi.so: Mach-O universal binary with 2 architectures
  /usr/libexec/apache2/mod_wsgi.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
  /usr/libexec/apache2/mod_wsgi.so (for architecture i386):   Mach-O bundle i386
  </code></pre>
  
  <p>I added several configuration directives to /private/etc/apache2/httpd.conf after all the LoadModule directives.</p>
  
  <pre><code>LoadModule wsgi_module libexec/apache2/mod_wsgi.so
  WSGIScriptAlias / /Library/WebServer/Documents
  </code></pre>
  
  <p>I restarted the apache daemon. The apache log looked good:</p>
  
  <p>[Thu Feb 09 19:19:15 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 mod_wsgi/3.3 Python/2.7.2 configured -- resuming normal operations</p>
  
  <p>I put this file into the /Library/WebServer/Documents folder:</p>
  
  <pre><code>def application(environ, start_response):
      status = '200 OK'
      output = 'Hello World!'
  
      response_headers = [('Content-type', 'text/plain'),
                          ('Content-Length', str(len(output)))]
  
      start_response(status, response_headers)
  
      return [output]
  </code></pre>
  
  <p>I executed it from my browser with: <a href="http://192.168.1.2/test.py" rel="nofollow">http://192.168.1.2/test.py</a></p>
  
  <p>I got back a response of "500 Internal Server error."</p>
  
  <p>My server log says:</p>
  
  <pre><code>[Thu Feb 09 20:12:10 2012] [error] [client 192.168.1.2] (8)Exec format error: exec of '/Library/WebServer/Documents/test.py' failed
  [Thu Feb 09 20:12:10 2012] [error] [client 192.168.1.2] Premature end of script headers: test.py
  [Thu Feb 09 20:12:10 2012] [error][client 192.168.1.2] mod_wsgi (pid=4251): Target WSGI script '/Library/WebServer/Documents/favicon.ico' does not contain WSGI application 'application'.
  </code></pre>
  
  <p>After much searching I haven't been able to find out why. I even stuck a favicon.ico in the documents folder. That caused this to be logged:</p>
  
  <pre><code>[Thu Feb 09 19:15:44 2012] [error] [client 192.168.1.2] (8)Exec format error: exec of '/Library/WebServer/Documents/test.py' failed
  [Thu Feb 09 19:15:44 2012] [error] [client 192.168.1.2] Premature end of script headers: test.py
  [Thu Feb 09 19:15:46 2012] [error] [client 192.168.1.2] mod_wsgi (pid=4135): Target WSGI script '/Library/WebServer/Documents/favicon.ico' does not contain WSGI application 'application'.
  </code></pre>
  
  <p>Any help would be appreciated.</p>