【问题标题】:ImportError: No module named lxml.etree failed in Apache2 CGIImportError:在 Apache2 CGI 中没有名为 lxml.etree 的模块失败
【发布时间】:2017-06-06 11:57:56
【问题描述】:

该错误仅发生在 web.xml 中。如果我在控制台中运行它,就可以了。我在 ubuntu 中工作。

我已经使用 CGI 设置了 apache2 来处理 python,并尝试在代码中显示 python 版本,并且可以证明 web 和控制台都在相同的 python 版本和用户上运行。

但是只要import lxml.etree,我就得到了下面的错误。

Traceback (most recent call last):
  File "/usr/lib/cgi-bin/TestPy.py", line 3, in <module>
    import lxml.etree as ET
ImportError: No module named lxml.etree

我的 CGI 配置如下: 文件名:serve-cgi-bin.conf

<IfDefine ENABLE_USR_LIB_CGI_BIN>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Require all granted


        #AddHandler cgi-script .py
        #Order allow,deny
        #Allow from all

    </Directory>
</IfDefine>

我的python代码如下:

#!/usr/bin/python

import lxml.etree as ET
import sys

print "Content-Type: text/plain\r\n\r\n"
print "Hello World!"

print "[" + sys.version + "]" + "  [" + sys.prefix + "]"
#xml_filename='/var/www/htmprint/Water.xml'
#xsl_filename='/var/www/htmprint/Water.xsl'
#dom = ET.parse(xml_filename)
#xslt = ET.parse(xsl_filename)
#transform = ET.XSLT(xslt)
#newdom = transform(dom)
#print(ET.tostring(newdom, pretty_print=True))

我觉得 lxml.etree 文件的权限不太合适,但我无法弄清楚。

如果有人可以提供帮助,请提前致谢。

【问题讨论】:

  • 我也怀疑权限问题。首先,Apache 以不同的用户身份运行 CGI 脚本——Debian/Ubuntu 上的 www-data。尝试在该用户下的命令行中运行您的脚本:su - www-data -c TestPy.py
  • 您好博士,按照您所说的进行了尝试,但 www-data 无法运行我的 TestPy.py。你能建议我应该做什么。我是否需要授予 www-data 才能访问“/home/MYNAME/.local/lib/python2.7/site-packages/”?谢谢
  • 您最好将包安装到全局站点包,而不是您的个人空间 .local。但是,如果您希望 Apache 访问 .local — 是的,chmod -R a+rX /home/MYNAME/.local/lib/python2.7/site-packages; chmod a+rX /home/MYNAME/.local/lib/python2.7; chmod a+rx /home/MYNAME/.local/lib; chmod a+rx /home/MYNAME/.local; chmod a+rx /home/MYNAME; chmod a+rx /home
  • 我已经使用命令 'sudo -H pip install lxml' 将 lxml 重新安装到全局站点包,它现在正在工作。非常感谢。如果您将其作为回复,我可以将其标记为答案。

标签: python cgi apache2-module


【解决方案1】:

将包安装到全局站点包,而不是您的个人空间 .local。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-01
    • 2020-05-07
    • 2014-10-29
    • 1970-01-01
    • 2018-05-25
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多