[mod_python] Building mod_python 3.3.1 for Python 2.5.2 on Mac OS X 10.5.2 (Leopard)

Graham Dumpleton graham.dumpleton at gmail.com
Mon Mar 24 02:30:12 EDT 2008


Please keep the discussion on the mailing list, don't just reply to me.

On 24/03/2008, Niklas Saers <niklassaers at gmail.com> wrote:
> Thanks Graham,
>  I compiled it according to your mail from svn, used the configure
>  statement
>
>  $ ./configure --with-python=/usr/bin/python --with-apxs=/usr/sbin/apxs
>  $ make
>  $ sudo make install
>
>  Then I added the line "LoadModule mod_python        libexec/apache2/
>  mod_python.so" to httpd.conf and put into my virtualhost file

Read the documentation properly, the LoadModule line should be:

  LoadModule python_module libexec/apache2/mod_python.so

Graham

>  <Location /testhandler>
>    SetHandler mod_python
>    PythonHandler mod_python.testhandler
>  </Location>
>
>  However, when I launch apache now, I get:
>
>  httpd: Syntax error on line 115 of /private/etc/apache2/httpd.conf:
>  Can't locate API module structure `mod_python' in file /usr/libexec/
>  apache2/mod_python.so: dlsym(0x10f7a0, mod_python): symbol not found
>
>  If I do not add the LoadModule statement, I get a 404 for the /
>  testhandler.
>
>  Do you have any suggestions as to what I'm doing wrong? I'm running
>  Leopard with the latest updates.
>
>  Cheers
>
>         Nik
>
>
>  On Mar 23, 2008, at 11:48 PM, Graham Dumpleton wrote:
>
>  > Please try source from subversion for mod_python instead. Should work
>  > without you needing to rename existing framework directory.  See:
>  >
>  >  http://www.modpython.org/pipermail/mod_python/2008-March/024954.html
>  >
>  > You will still need --with-apxs and --with-python commands.
>  >
>  > Graham
>  >
>  > On 24/03/2008, Jeffrey A. Zelt <jeffreyz at broadpark.no> wrote:
>  >> I had trouble building mod-pyhon 3.3.1 on Mac OS X 10.5.2 (Leopard),
>  >> so I thought I would share the solution here.
>  >>
>  >> I have installed Python 2.5.2 into /usr/local (to use instead of
>  >> Leopard's default 2.5.1 distribution).  It is not that v2.5.2
>  >> provides
>  >> so many improvements over v2.5.1; rather, Apple has shown in the past
>  >> that they do not upgrade their version of Python between major OX X
>  >> updates, and I would like to be able to take advantage of all future
>  >> improvements in v2.5.x and soon v2.6.x (possibly as early as this
>  >> summer).
>  >>
>  >> I have also installed the Apache 2.2.8 web server (instead of Apples
>  >> default Apache server, which I think is also v2.2.8).
>  >>
>  >> I did not touch/modify Apple's default Python 2.5.1 or Apache 2.2.8
>  >> installations in any way.
>  >>
>  >> First, I will describe the problem and then I will show the
>  >> *solution*
>  >> that solves this problem.
>  >>
>  >>
>  >>
>  >> Problem:
>  >>
>  >> If you perform a normal mod_python build, the copy of mod_python.so
>  >> that is created by the build process has the python module import
>  >> paths from Apple's Python 2.5.1 installation *hardwired* into it.  I
>  >> know this is so because I looked into the mod_python.so file (even
>  >> though this is a binary file), and I could see strings that referred
>  >> to  Apple's Python 2.5.1 installation.
>  >>
>  >> Note that this occurred even though I specified the mod_python
>  >> configure option:
>  >>
>  >>     --with-python=/usr/local/bin/python2.5
>  >>
>  >> (which is the Python 2.5.2 installation I installed myself).
>  >>
>  >> When I tried to connect to my Apache 2.2.8 web server with a request
>  >> that was routed to mod_python (such as the /mpinfo testhandler), I
>  >> received a generic 500 Server Error page in my web browser and the
>  >> Apache error log file contained the following:
>  >>
>  >> [Sat Mar 15 17:19:48 2008] [error] python_init: Python version
>  >> mismatch, expected '2.5.2', found '2.5.1'.
>  >> [Sat Mar 15 17:19:48 2008] [error] python_init: Python executable
>  >> found '/usr/local/bin/python'.
>  >> [Sat Mar 15 17:19:48 2008] [error] python_init: Python path being
>  >> used
>  >> '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
>  >> python25.zip:/System/Library/Frameworks/Python.framework/Versions/
>  >> 2.5/
>  >> lib/python2.5/:/System/Library/Frameworks/Python.framework/Versions/
>  >> 2.5/lib/python2.5/plat-darwin:/System/Library/Frameworks/
>  >> Python.framework/Versions/2.5/lib/python2.5/plat-mac:/System/Library/
>  >> Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-
>  >> scriptpackages:/System/Library/Frameworks/Python.framework/Versions/
>  >> 2.5/lib/python2.5/../../Extras/lib/python:/System/Library/Frameworks/
>  >> Python.framework/Versions/2.5/lib/python2.5/lib-tk:/System/Library/
>  >> Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload'.
>  >> [Sat Mar 15 17:19:48 2008] [notice] mod_python: Creating 32 session
>  >> mutexes based on 256 max processes and 0 max threads.
>  >> [Sat Mar 15 17:19:48 2008] [notice] mod_python: using
>  >> mutex_directory /
>  >> tmp
>  >> [Sat Mar 15 17:19:48 2008] [notice] Digest: generating secret for
>  >> digest authentication ...
>  >> [Sat Mar 15 17:19:48 2008] [notice] Digest: done
>  >> [Sat Mar 15 17:19:49 2008] [notice] Apache/2.2.8 (Unix) mod_ssl/2.2.8
>  >> OpenSSL/0.9.7l DAV/2 mod_python/3.3.1 Python/2.5.1 SVN/1.4.6
>  >> configured -- resuming normal operations
>  >>
>  >> Notice that even though the Apache process found Python 2.5.2 in /
>  >> usr/
>  >> local/bin (I was careful to set the PATH environment variable
>  >> appropriately in my launchctl configuration file for the web server),
>  >> the python module import paths all seem to refer to Apple's default
>  >> Python 2.5.1 distribution (which does not have the mod_python package
>  >> installed, of course).  Needless to say, mod_python was not useable.
>  >>
>  >>
>  >>
>  >> Solution:
>  >>
>  >> 1. Before building mod_python, execute:
>  >>
>  >>    $ cd /System/Library/Frameworks
>  >>    $ sudo mv Python.framework XXX_Python.framework
>  >>
>  >> 2. After building mod_python, revert this change with:
>  >>
>  >>    $ cd /System/Library/Frameworks
>  >>    $ sudo mv XXX_Python.framework Python.framework
>  >>
>  >> In other words, the build process should look something like the
>  >> following (the configure options you choose may be different that
>  >> those I used):
>  >>
>  >>    $  cd /System/Library/Frameworks
>  >>    $  sudo mv Python.framework XXX_Python.framework
>  >>
>  >>    $  cd  <mod_python distribution directory>
>  >>    $  ./configure \
>  >>> --with-apxs=/usr/local/apache2/bin/apxs \
>  >>> --with-python=/usr/local/bin/python2.5 \
>  >>> --with-max-locks=32
>  >>    $  make
>  >>    $  sudo make install
>  >>
>  >>    $  cd /System/Library/Frameworks
>  >>    $  sudo mv XXX_Python.framework Python.framework
>  >>
>  >>
>  >>
>  >> Conjecture:
>  >>
>  >> I am not a C programmer, but I would guess that there is a slight
>  >> problem with the build system for mod_python on Leopard that needs to
>  >> be fixed.  If you supply the configure option:
>  >>
>  >>    --with-python=/usr/local/bin/python2.5
>  >>
>  >> the build process should ignore everything to do with Apple's Python
>  >> 2.5.1 distribution, but it does not.  It seems that the "sudo mv ..."
>  >> commands from the recipe above are enough to temporarily hide Apple's
>  >> Python 2.5.1 distribution from the mod_python build system so that a
>  >> mod_python.so module can be built that is solely dependendent on the
>  >> Python 2.5.2 distribution I specified in the configure options.
>  >> Let's
>  >> hope that the mod_python distribution is updated soon so that others
>  >> are not bitten by this bug.
>  >>
>  >> Even if my conjecture is not correct, at least you have a recipe for
>  >> successfully installing mod_python under the conditions I outlined
>  >> above.
>  >>
>  >> Jeffrey
>  >>
>  >>
>  >>
>  >> _______________________________________________
>  >> Mod_python mailing list
>  >> Mod_python at modpython.org
>  >> http://mailman.modpython.org/mailman/listinfo/mod_python
>  >>
>  > _______________________________________________
>  > Mod_python mailing list
>  > Mod_python at modpython.org
>  > http://mailman.modpython.org/mailman/listinfo/mod_python
>
>


More information about the Mod_python mailing list