|
hungrybackspace at gmail.com
hungrybackspace at gmail.com
Mon Jun 2 15:58:33 EDT 2008
Greetings,
We're having a bit of a time importing modules that aren't in the
standard library while using mod_python on this particular server. We
have had, however, success with other servers. We're trying to run a
tiny application that looks like this:
on the console side:
~/scratch/
RunImportTest.py
__init__.py
ImportTest/
ImportTest.py
__init__.py
...and the web side:
/home/httpd/html/beta/
RunImportTestModPython.py
Below, the contents of the three files:
RunImportTest.py:
=================
from ImportTest.ImportTest import TEST_CONSTANT
print TEST_CONSTANT
RunImportTestModPython.py:
==========================
from mod_python import apache
from ImportTest.ImportTest import TEST_CONSTANT
def handler(req):
req.content_type = 'text/plain'
req.write(TEST_CONSTANT)
return apache.OK
ImportTest/ImportTest.py:
=========================
TEST_CONSTANT = "success"
Output from the import test from command line:
~/scratch> python RunImportTest.py
success
So we know the little program does indeed work. Here is the output
from Apache via mod_python:
========================
MOD_PYTHON ERROR
ProcessId: 18704
Interpreter: 'beta.company.com'
ServerName: 'beta.company.com'
DocumentRoot: '/home/httpd/html/beta'
URI: '/RunImportTestModPython.py'
Location: None
Directory: '/home/httpd/html/beta/'
Filename: '/home/httpd/html/beta/RunImportTestModPython.py'
PathInfo: ''
Phase: 'PythonHandler'
Handler: 'RunImportTestModPython'
Traceback (most recent call last):
File "/usr/local/lib/python2.5/site-packages/mod_python/importer.py",
line 1537, in HandlerDispatch
default=default_handler, arg=req, silent=hlist.silent)
File "/usr/local/lib/python2.5/site-packages/mod_python/importer.py",
line 1202, in _process_target
module = import_module(module_name, path=path)
File "/usr/local/lib/python2.5/site-packages/mod_python/importer.py",
line 296, in import_module
log, import_path)
File "/usr/local/lib/python2.5/site-packages/mod_python/importer.py",
line 680, in import_module
execfile(file, module.__dict__)
File "/home/httpd/html/beta/RunImportTestModPython.py", line 2, in <module>
from ImportTest.ImportTest import TEST_CONSTANT
ImportError: No module named ImportTest.ImportTest
MODULE CACHE DETAILS
Accessed: Mon Jun 2 14:21:49 2008
Generation: 0
_mp_df6c4429391f4fb65dc56704a2c1e0e2 {
FileName: '/home/httpd/html/beta/RunImportTestModPython.py'
Instance: 1 [IMPORT]
Generation: 0 [ERROR]
Modified: Mon Jun 2 11:49:11 2008
}
...and here's an .htaccess file we're using in the directory
/home/httpd/html/beta, the directory that RunImportTestModPython.py is
in:
=========================
Options Indexes FollowSymLinks MultiViews
AddHandler mod_python .py
PythonDebug On
PythonHandler RunImportTestModPython
PythonAutoReload On
PythonPath "['/home/me/scratch', '/home/me/scratch/ImportTest',
'/usr/lib/python2.5/', '/usr/lib/python2.5/lib-dynload/',
'/usr/lib/python2.5/site-packages/']"
...where /home/me is the user directory referenced at the top of the message.
It's quite likely we're overlooking something very simple--but this
same setup works without hitch on another system (granted, versions of
OS, Apache, mod_python and Python are slightly different...). This
non-functioning setup is:
* CentOS 5
* Apache 2.2.8
* PHP 5.2.6
* Python 2.5.2
* mod_python 3.3.1
* cx_oracle 4.3.3
some of those are kind of irrelevant for the specific application
here, but there might be hidden conflicts that I'm not aware of. I
have read some stuff about using mod_python's native import methods,
and I'd very much like to use the standard python import method
instead, as it preserves command-line execution without having to add
a lot of overhead. And in fact, I shouldn't have to because this
setup works on another server. Unfortunately, I can't simply use the
other server...
Hope this isn't all too much information--I'm very grateful for any
help anyone may provide.
many thanks,
MC
|