[mod_python] PythonImport: Can someone please draw a diagramfor this idiot?

Lee Brown administrator at leebrown.org
Thu Sep 15 00:27:33 EDT 2005


Greetings!

PythonImport works exactly as advertised for me.  I'll show you my setup;
maybe that will shed some light...

Environment:

	Apache 2.0.54 (win32/MPM), mod_python 3.1.3, Python 2.3.4, WinXP SP2

In the main section of httpd.conf:

	AddHandler mod_python .py
	PythonImport site_setup.py crashtest

In the vhosts section of httpd.conf:

	<VirtualHost *:80>
		ServerName crashtest.leebrown.org
		...
		PythonPath	"sys.path +
['C:/.../crashtest/home/','C:/.../crashtest/config/']"
		PythonInterpreter crashtest
		PythonHandler import_test
		PythonDebug On
		...
	</VirtualHost>

In site_setup.py:

	__all__ = ['basepath', 'siteroot', 'cfg_root', 'doc_root',
'tmp_root', 'py__root']

	basepath = 'c:/projects/webdev/sites'
	siteroot = basepath + '/crashtest'
	cfg_root = siteroot + '/config'
	doc_root = siteroot + '/home'
	tmp_root = siteroot + '/templates'
	py__root = siteroot + '/python'

In import_test.py:

	from mod_python import apache
	from site_setup import *

	def handler(req):
    		req.content_type = 'text/plain'
    		req.write(siteroot)
    		return apache.OK

Which writes "c:/projects/webdev/sites/crashtest" just as expected.

A few observations bear noting:

In my setup, the PythonInterpreter statement comes AFTER the PythonImport
statement.  I noticed that some folks had it the other way 'round.  I have
no idea if this really makes a difference or not.

The first path added to sys.path is actually redundant; the server or vhost
DocumentRoot path is stealthly added to sys.path by mod_python

Site_setup.py is loaded before PythonPath is evaluated, so it's useless for
locating the imported module.  However, site_setup.py is loaded AFTER the
DocumentRoot is added to sys.path, so the imported module can be located in
the DocumentRoot in addition to all the 'standard' Python places.

I have not tried this yet, but with a proper *.pth (python path file) you
~might~ be able to add custom paths that are available when PythonImport
executes.

Best Regards,
Lee E. Brown
(administrator at leebrown.org)

-----Original Message-----
From: mod_python-bounces at modpython.org
[mailto:mod_python-bounces at modpython.org] On Behalf Of Jorey Bump
Sent: Wednesday, September 14, 2005 4:37 PM
To: mod_python at modpython.org
Subject: Re: [mod_python] PythonImport: Can someone please draw a diagramfor
this idiot?

Jorey Bump wrote:
> jamestmcneill-python at yahoo.co.uk wrote:
> 
>> 3) From this I can see that the PythonImport directive doesn't seem 
>> to be working at all (or at least, in any way I expected it to). It 
>> does not produce a compiled version of the module specified,
> 
> This is not unusual. The user that apache runs as must have write 
> permissions in the directory in order to produce a .pyc file. I'm not 
> sure what happens under Windows regarding this, but if I want a 
> compiled version of the module under Linux, I compile it ahead of time 
> or change the permissions (rarely).

Having said that, I just tried using the PythonImport statement, and I also
see no evidence that it works. I may be using or testing it incorrectly,
however.
_______________________________________________
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