Question

I am using Windows XP, and using Python run time from http://www.python.org/ftp/python/2.7/python-2.7.msi

If I am running in standalone application, import psycopg2 doesn't cause me any trouble. However, when come to mod_wsgi + apache, I will get the following error

[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1] mod_wsgi (pid=2832): Target WSGI script 'C:/Projects/SandBox/web/script/index.py' cannot be loaded as Python module.
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1] mod_wsgi (pid=2832): Exception occurred processing WSGI script 'C:/Projects/SandBox/web/script/index.py'.
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1]   File "C:/Projects/SandBox/web/script/index.py", line 9, in <module>
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1]     import psycopg2
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1]   File "build\\bdist.win32\\egg\\psycopg2\\__init__.py", line 65, in <module>
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1]     from psycopg2 import tz
[Thu Nov 18 14:26:51 2010] [error] [client 127.0.0.1] ImportError: cannot import name tz

Here is the python script.

import sys, os
sys.path.append(os.path.dirname(__file__))

import psycopg2

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]

and here is the httpd.conf file.

LoadModule wsgi_module modules/mod_wsgi-win32-ap22py27-3.3.so
WSGIScriptAlias / "C:/Projects/SandBox/web/"
<Directory "C:/Projects/SandBox/web">
    AllowOverride None
    Options None
    Order deny,allow
    Allow from all
</Directory>

I check the archive C:\Python27\Lib\site-packages\psycopg2-2.2.2-py2.7-win32.egg\, there is C:\Python27\Lib\site-packages\psycopg2-2.2.2-py2.7-win32.egg\psycopg2\tz.py

Was it helpful?

Solution

My guess would be that Python doesn't know your egg cache location (or doesn't have privileges to it). You just need to set that. More information here. Try setting the WSGIPythonEggs directive.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top