What version of mod_wsgi is being used?

What version of Python is that mod_wsgi.so actually compiled for?

To work out the latter, you will need to find mod_wsgi.so in homebrew and run 
on it:

    otool -L mod_wsgi.so

>From what I have seen homebrew still ships a very old version of mod_wsgi that 
>may not even work with Python 3.4.

I also suspect that the homebrew mod_wsgi is not built for Python 3.4 but an 
older Python 3 version.

Personally I would recommend not using homebrew mod_wsgi because of it being 
out of date.

There are easier ways now to install mod_wsgi using the pip installable 
variant. This can still then be made to install a mod_wsgi.so into your Apache 
installation allowing you to manually configure Apache if that is really want 
you want to do, but if all you are doing is using this to do a simple personal 
project, using mod_wsgi-express would likely make more sense.

Anyway, give the version of mod_wsgi and what Python version it is using and 
will go from there.

Graham

On 17/02/2015, at 11:41 AM, [email protected] wrote:

> I'm trying to configure a Django test application for a personal project.  I 
> have previous Django experience, but that was all with Python 2.7.x.  I'd 
> like to start using 3.x when possible, and this project seems like a good way 
> to start.
> 
> Backend is a standard Postgres 9.4 installation, Apache 2.4, a 
> virtualenvwrapper pointing to the Python 3.4 executable, operating system is 
> OSX 10.10.  mod_wsgi and mod_wsgi3 have both been installed via homebrew.
> 
> However, there are issues getting mod_wsgi and mod_wsgi3 to work with python 
> 3.  Specifically,  `./manage.py runserver 8080` works fine, but when I try to 
> use a virtualhost configuration with Apache, I get 
> 
>     mod_wsgi (pid=29906): Target WSGI script 
> '/Users/jason/projects/geocode_django/geodjango/geodjango/wsgi.py' cannot be 
> loaded as Python module.
>     mod_wsgi (pid=29906): Exception occurred processing WSGI script 
> '/Users/jason/projects/geocode_django/geodjango/geodjango/wsgi.py'.
>     Traceback (most recent call last):
>           File 
> "/Users/jason/projects/geocode_django/geodjango/geodjango/wsgi.py", line 28, 
> in <module>
>           application = get_wsgi_application()
>           File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/core/wsgi.py",
>  line 14, in       get_wsgi_application
>           django.setup()
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/__init__.py",
>  line 21, in setup
>           apps.populate(settings.INSTALLED_APPS)
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/apps/registry.py",
>  line 108, in populate
>          app_config.import_models(all_models)
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/apps/config.py",
>  line 197, in import_models
>           self.models_module = import_module(models_module_name)
>         File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py",
>  line 37, in import_module
>            __import__(name)
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/contrib/auth/models.py",
>  line 40, in <module>
>            class Permission(models.Model):
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/models/base.py",
>  line 125, in __new__
>            new_class.add_to_class('_meta', Options(meta, **kwargs))
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/models/base.py",
>  line 300, in add_to_class
>            value.contribute_to_class(cls, name)
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/models/options.py",
>  line 166, in contribute_to_class
>            self.db_table = truncate_name(self.db_table, 
> connection.ops.max_name_length())
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/__init__.py",
>  line 40, in __getattr__
>            return getattr(connections[DEFAULT_DB_ALIAS], item)
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/utils.py",
>  line 242, in __getitem__
>             backend = load_backend(db['ENGINE'])
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/utils.py",
>  line 108, in load_backend
>             return import_module('%s.base' % backend_name)
>         File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py",
>  line 37, in import_module
>             __import__(name)
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/contrib/gis/db/backends/postgis/base.py",
>  line 2, in <module>
>             from django.db.backends.postgresql_psycopg2.base import 
> DatabaseWrapper as Psycopg2DatabaseWrapper
>         File 
> "/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py",
>  line 27, in <module>
>             raise ImproperlyConfigured("Error loading psycopg2 module: %s" % 
> e)
>               ImproperlyConfigured: Error loading psycopg2 module: 
> dlopen(/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/  
> site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PyBytes_Type
>             Referenced from: 
> /Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/psycopg2/_psycopg.so
>               Expected in: flat namespace
>               in 
> /Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages/psycopg2/_psycopg.so
> 
> My wsgi.py file is
> 
>     import os, sys, site
> 
>     
> site.addsitedir("/Users/jason/.virtualenvs/geodev_env3/lib/python3.4/site-packages")
> 
>     sys.path.append("/Users/jason/projects/geocode_django/geodjango")
>     
> sys.path.append("/Users/jason/projects/geocode_django/geodjango/geodjango")
> 
>     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "geodjango.settings")
> 
>     with open("/Users/jason/.virtualenvs/geodev_env3/bin/activate_this.py") 
> as f:
>         code = compile(f.read(), 
> "/Users/jason/.virtualenvs/geodev_env3/bin/activate_this.py", "exec")
>         exec(code, 
> dict(__file__="/Users/jason/.virtualenvs/geodev_env3/bin/activate_this.py"))
> 
>     from django.core.wsgi import get_wsgi_application
>     application = get_wsgi_application()
> 
> and virtualhost file is:
> 
>     LoadModule wsgi_module /usr/local/Cellar/mod_wsgi3/3.5/libexec/mod_wsgi.so
> 
>     <VirtualHost *:80>
>         ServerName      dev.geocode.com
>         ServerAlias     geocode.com
>         ServerAdmin     [email protected]
> 
>         DocumentRoot    "/Users/jason/projects/geocode_django"
>         Alias /static/ /Users/jason/projects/geocode_django/static/
> 
>         WSGIScriptAlias / 
> /Users/jason/projects/geocode_django/geodjango/geodjango/wsgi.py
> 
>         <Directory /Users/jason/projects/geocode_django/static >
>                 require all granted
>         </Directory>
> 
>         <Directory /Users/jason/projects/geocode_django/geodjango/geodjango >
>                 <Files wsgi.py >
>                         Require all granted
>                 </Files>
> 
>         </Directory>
> 
>         CustomLog /Users/jason/projects/geocode_django/logs/access.log 
> combined
>         ErrorLog /Users/jason/projects/geocode_django/logs/error.log
> 
>     </VirtualHost>
> 
> My issue is that if I have a python 2.7 virtualenv with the same virtualhost 
> with the LoadModule pointing to 
> 
>     LoadModule wsgi_module 
> /usr/local/Cellar/mod_wsgi/4.4.7/libexec/mod_wsgi.so
> 
> and replace 
> 
>     with open("/Users/jason/.virtualenvs/geodev_env3/bin/activate_this.py") 
> as f:
>         code = compile(f.read(), 
> "/Users/jason/.virtualenvs/geodev_env3/bin/activate_this.py", "exec")
>         exec(code, 
> dict(__file__="/Users/jason/.virtualenvs/geodev_env3/bin/activate_this.py"))
> 
> in wsgi.py with
> 
>     
> exec(open("/Users/jasonjohns/.virtualenvs/geocode_env/bin/activate_this.py").read())
> 
> I can load up the site with the URL `dev.geocode.com`.  Otherwise, I get an 
> error 500 page with the error output in the log file.
> 
> I originally thought this was an issue with psycopg2, and filed a [bug 
> report][1].  However, the dev closed the issue as being concerned with 
> mod_wsgi, not psycopg.
> 
>   [1]:https://github.com/psycopg/psycopg2/issues/286#issuecomment-73619287
> 
> Is there a solution for OSX virtualenvwrappers to use Python 3 with mod_wsgi 
> & apache?
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/modwsgi.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to