从_jcc导入initVM DLL加载失败:找不到指定的模块

时间:2012-08-10 20:47:10

标签: django python-2.7 mod-wsgi pylucene

您好我正在尝试将使用来自DJANGO Dev服务器的Pylucene的Django v1.3应用程序移植到使用mod_wsgi的Apache,它在同一台Windows XP计算机上出错。

来自Django调试的错误消息:

  

/ administration / feeds /

中的ViewDoesNotExist      

无法导入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中\站点包\南0.7.3-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ django_admin_tools-0.4.0-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ JCC-2.8 py2.7-win32.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ lucene的-3.1.0-py2.7-win32.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ oauth2-1.5.170-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ httplib2-0.7.2-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ django_social_auth-0.6.0-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ python_openid-2.2.5-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ python_dateutil-1.5-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\分发-0.6.24-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ django_chronograph-0.2.0.dev-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ pyofc2-0.1.5dev-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ anyjson-0.3.1-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ django_pagination-1.0.7-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ GDATA-2.0.17-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\ flickrapi-1.4.2-py2.7.egg&#39 ;,   ' C:\ Python27 \ lib中\站点包\线程池-1.2.7-py2.7.egg&#39 ;,   ' c:\ Python27 \ Lib',' c:\ test \ git_repo \ src',   ' C:\测试\ git_repo \ SRC \ plunk4&#39 ;,   ' C:\测试\ git_repo \ SRC \ plunk4 \馈送&#39 ;,   ' C:\ Python27 \ LIB \站点包\ lucene的-3.1.0-py2.7-win32.egg \ lucene的&#39 ;,   ' C:\ Python27 \ LIB \站点包\ lucene的-3.1.0-py2.7-win32.egg \ lucene的\ lib中&#39 ;,   ' 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

  

[Fri Aug 10 13:03:03 2012] [warn] 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] [通知]服务器内置:1月28日   2012 11:16:39 [Fri Aug 10 13:03:03 2012] [notice]父母:创建   子进程6780 [Fri Aug 10 13:03:03 2012] [warn] mod_wsgi:   编译为Python / 2.7。 [2012年8月10日星期五13:03:03] [警告] mod_wsgi:   运行时使用Python / 2.7.1。 [2012年8月10日星期五13:03:03] [通知]孩子   6780:正在运行子程序[2012年8月10日星期五13:03:04] [通知]   子6780:获取启动互斥锁。 [2012年8月10日星期五13:03:04]   [通知] Child 6780:启动64个工作线程。 [8月10日星期五13:03:04   2012] [通知]儿童6780:开始在80端口听线程。[周五   8月10日13:03:45 2012] [错误] [客户端127.0.0.1] mod_wsgi(pid = 6780):   目标WSGI脚本' C:/temp/wsgi_test.py'无法加载为Python   模块。 [2012年8月10日星期五13:03:45] [错误] [客户端127.0.0.1] mod_wsgi   (pid = 6780):处理WSGI脚本时发生异常   ' C:/temp/wsgi_test.py' ;. [Fri Aug 10 13:03:45 2012] [错误] [客户   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] [错误] [客户端127.0.0.1]
  import jcc [Fri Aug 10 13:03:45 2012] [错误] [client 127.0.0.1]
  文件   " C:\ Python27 \ lib中\站点包\ JCC-2.8 py2.7-win32.egg \ JCC \ __初始化__ PY&#34 ;,   第34行,[2012年8月10日星期五13:03:45] [错误] [客户   127.0.0.1]来自_jcc import initVM [Fri Aug 10 13:03:45 2012] [错误] [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: 我在下面创建了一个c:\ 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 =&#39; 2.7.1(r271:86832,2010年11月27日,18:30:46)[MSC v.1500   32位(英特尔)]&#39; sys.prefix =&#39; c:\ Python27&#39; sys.path =   [&#39; C:\ Python27 \ LIB \站点包\南0.7.3-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ django_admin_tools-0.4.0-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ JCC-2.8 py2.7-win32.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ lucene的-3.1.0-py2.7-win32.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ oauth2-1.5.170-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ httplib2-0.7.2-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ django_social_auth-0.6.0-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ python_openid-2.2.5-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ python_dateutil-1.5-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\分发-0.6.24-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ django_chronograph-0.2.0.dev-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ pyofc2-0.1.5dev-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ anyjson-0.3.1-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ django_pagination-1.0.7-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ GDATA-2.0.17-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\ flickrapi-1.4.2-py2.7.egg&#39 ;,   &#39; C:\ Python27 \ lib中\站点包\线程池-1.2.7-py2.7.egg&#39 ;,   &#39; c:\ Python27 \ Lib&#39;,&#39; c:\ test \ git_repo \ src&#39;,   &#39; C:\测试\ git_repo \ SRC \ plunk4&#39 ;,   &#39; C:\测试\ git_repo \ SRC \ plunk4 \馈送&#39 ;,   &#39; C:\ Python27 \ LIB \站点包\ lucene的-3.1.0-py2.7-win32.egg \ lucene的&#39 ;,   &#39; C:\ Python27 \ LIB \站点包\ lucene的-3.1.0-py2.7-win32.egg \ lucene的\ lib中&#39 ;,   &#39; C:\ Program Files \ Java \ jdk1.6.0_30 \ jre \ bin&#39;,&#39; C:\ Program   Files \ Java \ jdk1.6.0_30 \ jre \ bin \ client&#39;,&#39; C:\ Program   Files \ Apache Software Foundation \ Apache2.2&#39;,   &#39; C:\ WINDOWS \ system32 \ python27.zip&#39;,&#39; c:\ Python27 \ DLLs&#39;,   &#39; c:\ Python27 \ lib \ plat-win&#39;,&#39; c:\ Python27 \ lib \ lib-tk&#39;,   &#39; C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ bin&#39;,   &#39; c:\ Python27&#39;,&#39; c:\ Python27 \ lib \ site-packages&#39;,   &#39; C:/ Python27 / LIB /站点包&#39 ;,   &#39; C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene' ;,   &#39; C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene/lib' ;,   &#39; C:/Python27/Lib/site-packages/JCC-2.8-py2.7-win32.egg/jcc.dll' ;,   &#39; C:/ Python27 / LIB /站点包&#39 ;,   &#39; C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene' ;,   &#39; C:/Python27/Lib/site-packages/lucene-3.1.0-py2.7-win32.egg/lucene/lib' ;,   &#39; C:/Python27/Lib/site-packages/JCC-2.8-py2.7-win32.egg/jcc.dll'] wsgi.multithread   = Truemod_wsgi.process_group =&#39;&#39;

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

Could not import/No module named Django Error with Apache

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

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

1 个答案:

答案 0 :(得分:0)

解决方案是使用Apache Solr。这允许我从Python到Lucene索引进行REST服务调用,而没有试图让Python调用Java / Lucene的麻烦。