views:

80

answers:

3

On a Red hat box, I upgraded Python from 2.3 to 2.6.4 and changed the symlink to python so when I type in python the 2.6.4 interpreter comes up.

However my .py file works from the command-line, but not in the browser. It seemed like a sys.path issue so I opened the file in a browser and printed out sys.path.

Surprisingly, my sys.path is different when called from a browser than when called from a command-line. Because the paths are all referring to 2.3, I believe Apache is picking up Python 2.3 rather than the new 2.6.4 version I installed.

How do I make Apache use Python 2.6.4?

A: 

On RH box Apache probably runs as root user. Login as root and see which version of python root sees.

HIH

..richie

Richie
apache runs as apache
JimB
+2  A: 

If you're using mod_python or mod_wsgi, you should reinstall them as they've probably been built to the python version you had when they were first installed on the system (which in your case appears to be Python 2.3).

Dan Loewenherz
How do I tell if the server is using mod_python or mod_wsgi (or rather, which of them)?
Pranab
From the command line, run `httpd -M` or `apachectl -M`. Either should list dynamically and statically-loaded modules on your Apache installation.
Dan Loewenherz
@Pranab - you most likely have mod_python. RedHat hasn't yet had a release that includes mod_wsgi. You also will need to re-compile the module to use the correct embedded interpreter. Re-installation won't change that.
JimB
I eventually sidestepped the problem by installing my required Python modules to the older Python as well, by manually using `python2.3 setup.py install`.
Pranab
+1  A: 

Apache isn't calling python directly, so the path is irrelevant. You will probably want to build yourself a new mod_wsgi to link against python 2.6.4.

JimB