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
|