2

嗨,我正在尝试将使用 Pylucene 从 DJANGO 开发服务器的工作 Django v1.3 应用程序移植到带有 mod_wsgi 的 Apache,它在同一台 Windows XP 机器上给出错误。

来自 Django 调试的错误消息:

ViewDoesNotExist 在 /administration/feeds/

无法导入 plunk4.feeds.views。错误是:DLL 加载失败:找不到指定的模块。

请求方法:GET 请求 URL:localhost/administration/feeds/ Django 版本:1.3 异常类型:ViewDoesNotExist 异常值:

无法导入 plunk4.feeds.views。错误是:DLL 加载失败:找不到指定的模块。

异常位置:c:\Python27\lib\site-packages\django\core\urlresolvers.py in _get_callback,第 167 行 Python 可执行文件:C:\Program Files\Apache Software Foundation\Apache2.2\bin\httpd.exe Python 版本:2.7.1 Python 路径:

['c:\Python27\lib\site-packages\south-0.7.3-py2.7.egg', 'c:\Python27\lib\site-packages\django_admin_tools-0.4.0-py2.7.egg' , 'c:\Python27\lib\site-packages\jcc-2.8-py2.7-win32.egg', 'c:\Python27\lib\site-packages\lucene-3.1.0-py2.7-win32.鸡蛋','c:\Python27\lib\site-packages\oauth2-1.5.170-py2.7.egg','c:\Python27\lib\site-packages\httplib2-0.7.2-py2.7。鸡蛋','c:\Python27\lib\site-packages\django_social_auth-0.6.0-py2.7.egg','c:\Python27\lib\site-packages\python_openid-2.2.5-py2.7。鸡蛋','c:\Python27\lib\site-packages\python_dateutil-1.5-py2.7.egg','c:\Python27\lib\site-packages\distribute-0.6.24-py2.7.egg' , 'c:\Python27\lib\site-packages\django_chronograph-0.2.0.dev-py2.7.egg', 'c:\Python27\lib\site-packages\pyofc2-0.1.5dev-py2.7.egg'、'c:\Python27\lib\site-packages\anyjson-0.3.1-py2.7.egg'、'c:\Python27\lib\site-packages\django_pagination-1.0.7-py2。 7.egg'、'c:\Python27\lib\site-packages\gdata-2.0.17-py2.7.egg'、'c:\Python27\lib\site-packages\flickrapi-1.4.2-py2。 7.egg'、'c:\Python27\lib\site-packages\threadpool-1.2.7-py2.7.egg'、'c:\Python27\Lib'、'c:\test\git_repo\src'、 'c:\test\git_repo\src\plunk4', 'c:\test\git_repo\src\plunk4\feeds', 'C:\Python27\Lib\site-packages\lucene-3.1.0-py2.7- win32.egg\lucene', 'C:\Python27\Lib\site-packages\lucene-3.1.0-py2.7-win32.egg\lucene\lib', 'C:\Program Files\Java\jdk1.6.0 _30\jre\bin'、'C:\Program Files\Java\jdk1.6.0_30\jre\bin\client'、'C:\Program Files\Apache Software Foundation\Apache2.2', 'C:\WINDOWS\system32\python27.zip', 'c:\Python27\DLLs', 'c:\Python27\lib\plat-win', 'c:\Python27\lib\lib-tk' , 'C:\Program Files\Apache Software Foundation\Apache2.2\bin', 'c:\Python27', 'c:\Python27\lib\site-packages']

服务器时间:2012年8月10日星期五13:14:36 -0700

这是apache error.log

[2012 年 8 月 10 日星期五 13:03:03] [警告] mod_wsgi:为 Python/2.7 编译。[2012 年 8 月 10 日星期五 13:03:03] [警告] mod_wsgi:运行时使用 Python/2.7.1。[2012 年 8 月 10 日星期五 13:03:03] [通知] Apache/2.2.22 (Win32) mod_wsgi/3.3 Python/2.7.1 已配置 -- 恢复正常操作 [2012 年 8 月 10 日星期五 13:03:03] [通知]服务器构建:2012 年 1 月 28 日 11:16:39 [2012 年 8 月 10 日星期五 13:03:03] [通知] 父级:创建子进程 6780 [2012 年 8 月 10 日星期五 13:03:03] [警告] mod_wsgi:为 Python 编译/2.7。[2012 年 8 月 10 日星期五 13:03:03] [警告] mod_wsgi:运行时使用 Python/2.7.1。[Fri Aug 10 13:03:03 2012] [notice] Child 6780:子进程正在运行 [Fri Aug 10 13:03:04 2012] [notice] Child 6780:获得启动互斥锁。[Fri Aug 10 13:03:04 2012] [notice] Child 6780:启动 64 个工作线程。[Fri Aug 10 13:03:04 2012] [通知] 儿童 6780:启动线程以侦听端口 80。 [Fri Aug 10 13:03:45 2012] [error] [client 127.0.0.1] mod_wsgi (pid=6780): Target WSGI script 'C:/temp/wsgi_test.py' cannot be作为 Python 模块加载。[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] mod_wsgi (pid=6780):处理 WSGI 脚本“C:/temp/wsgi_test.py”时发生异常。[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] 回溯(最近一次通话最后):[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] 文件“ C:/temp/wsgi_test.py",第 8 行,在 [Fri Aug 10 13:03:45 2012] [error] [client 127.0.0.1] 1] mod_wsgi (pid=6780): 处理 WSGI 脚本 'C:/temp/wsgi_test.py' 时发生异常。[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] 回溯(最近一次通话最后):[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] 文件“ C:/temp/wsgi_test.py",第 8 行,在 [Fri Aug 10 13:03:45 2012] [error] [client 127.0.0.1] 1] mod_wsgi (pid=6780): 处理 WSGI 脚本 'C:/temp/wsgi_test.py' 时发生异常。[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] 回溯(最近一次通话最后):[2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1] 文件“ C:/temp/wsgi_test.py",第 8 行,在 [Fri Aug 10 13:03:45 2012] [error] [client 127.0.0.1]
导入 jcc [2012 年 8 月 10 日星期五 13:03:45] [错误] [客户端 127.0.0.1]
文件“c:\Python27\lib\site-packages\jcc-2.8-py2.7-win32.egg\jcc\__init__ .py”,第 34 行,在 [Fri Aug 10 13:03:45 2012] [error] [client 127.0.0.1] from _jcc import initVM [Fri Aug 10 13:03:45 2012] [error] [client 127.0. 0.1] ImportError:DLL加载失败:找不到指定的模块。

Lucene 似乎可以在 Python Shell 中工作:

C:\Documents and Settings\Carlos>python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import jcc
>>> import lucene
>>> lucene.initVM()
<jcc.JCCEnv object at 0x00AC67C0>
>>> lucene.VERSION
'3.1.0'

这是 python -m jcc.__main__ 的输出

  JCC - C++/Python Java Native Interface Code Generator

  Usage: python -m jcc.__main__ [options] [actions]

  Input options:
    --jar JARFILE           - make JCC wrap all public classes found in
                              JARFILE, add it to the module's CLASSPATH and
                              include it in the distribution
....

为了证明 mod_WSGI 安装正确:我在下面创建了 ac:\temp\wsgi_test.py 文件:

import sys

sys.path.append('C:/Python27/Lib/site-packages')
sys.path.append('C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene')
sys.path.append('C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene/lib')
sys.path.append('C:/Python27/Lib/site-packages/JCC-2.8-py2.7-win32.egg/jcc.dll')

def application(environ, start_response):
    status = '200 OK'

    output = ''
    output += 'sys.version = %s\n' % repr(sys.version)
    output += 'sys.prefix = %s\n' % repr(sys.prefix)
    output += 'sys.path = %s' % repr(sys.path)
    output += 'wsgi.multithread = %s' % repr(environ['wsgi.multithread'])
    output += 'mod_wsgi.process_group = %s' % repr(environ['mod_wsgi.process_group']) 

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

它返回:

sys.version = '2.7.1 (r271:86832, Nov 27, 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]' sys.prefix = 'c:\Python27' sys.path = [ 'c:\Python27\lib\site-packages\south-0.7.3-py2.7.egg', 'c:\Python27\lib\site-packages\django_admin_tools-0.4.0-py2.7.egg', 'c:\Python27\lib\site-packages\jcc-2.8-py2.7-win32.egg', 'c:\Python27\lib\site-packages\lucene-3.1.0-py2.7-win32.egg ', 'c:\Python27\lib\site-packages\oauth2-1.5.170-py2.7.egg', 'c:\Python27\lib\site-packages\httplib2-0.7.2-py2.7.egg ', 'c:\Python27\lib\site-packages\django_social_auth-0.6.0-py2.7.egg', 'c:\Python27\lib\site-packages\python_openid-2.2.5-py2.7.egg ', 'c:\Python27\lib\site-packages\python_dateutil-1.5-py2.7.egg', 'c:\Python27\lib\site-packages\distribute-0.6.24-py2.7.鸡蛋','c:\Python27\lib\site-packages\django_chronograph-0.2.0.dev-py2.7.egg','c:\Python27\lib\site-packages\pyofc2-0.1.5dev-py2。 7.egg'、'c:\Python27\lib\site-packages\anyjson-0.3.1-py2.7.egg'、'c:\Python27\lib\site-packages\django_pagination-1.0.7-py2。 7.egg'、'c:\Python27\lib\site-packages\gdata-2.0.17-py2.7.egg'、'c:\Python27\lib\site-packages\flickrapi-1.4.2-py2。 7.egg'、'c:\Python27\lib\site-packages\threadpool-1.2.7-py2.7.egg'、'c:\Python27\Lib'、'c:\test\git_repo\src'、 'c:\test\git_repo\src\plunk4', 'c:\test\git_repo\src\plunk4\feeds', 'C:\Python27\Lib\site-packages\lucene-3.1.0-py2.7- win32.egg\lucene', 'C:\Python27\Lib\site-packages\lucene-3.1.0-py2.7-win32.egg\lucene\lib', 'C:\Program Files\Java\jdk1.6.0_30\jre\bin','C:\Program Files\Java\jdk1.6.0_30\jre\bin\client','C:\Program Files\Apache Software Foundation\Apache2. 2', 'C:\WINDOWS\system32\python27.zip', 'c:\Python27\DLLs', 'c:\Python27\lib\plat-win', 'c:\Python27\lib\lib-tk' , 'C:\Program Files\Apache Software Foundation\Apache2.2\bin', 'c:\Python27', 'c:\Python27\lib\site-packages', 'C:/Python27/Lib/site-packages ', 'C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene', 'C:/Python27/Lib/site-packages/lucene-3.1.0-py2 .7-win32.egg/lucene/lib', 'C:/Python27/Lib/site-packages/JCC-2.8-py2.7-win32.egg/jcc.dll', 'C:/Python27/Lib/site -packages','C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32。egg/lucene', 'C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene/lib', 'C:/Python27/Lib/site-packages/JCC- 2.8-py2.7-win32.egg/jcc.dll']wsgi.multithread = Truemod_wsgi.process_group =''

我尝试了以下参考来解决问题: http ://code.google.com/a/apache-extras.org/p/pylucene-extra/wiki/PyLucene

Apache 无法导入/没有名为 Django 的模块错误

lists.osafoundation.org/pipermail/pylucene-dev/2007-November/002070.html

grokbase.com/t/lucene/pylucene-dev/125t3g2ph6/jcc-dll-loading-error

4

1 回答 1

0

解决方案是改用 Apache Solr。这使我可以将 REST 服务从 Python 调用到 Lucene 索引,而无需尝试让 Python 调用 Java/Lucene。

于 2015-03-18T19:27:02.587 回答