Python ImportError:没有名为web的模块

Python ImportError:没有名为web的模块,python,mod-wsgi,web.py,Python,Mod Wsgi,Web.py,当我尝试使用mod_wsgi运行web.py应用程序时,我在我的apache错误日志文件中遇到此错误。我已在共享主机上成功安装了web.py,我可以确认我能够在本地导入它: >>> import web >>> web.application(('/', 'test'), globals()) <web.application.application instance at 0x1f8d3b0> 我还添加了http.conf文件中建议的Files

当我尝试使用
mod_wsgi
运行
web.py
应用程序时,我在我的
apache
错误日志文件中遇到此错误。我已在共享主机上成功安装了
web.py
,我可以确认我能够在本地导入它:

>>> import web
>>> web.application(('/', 'test'), globals())
<web.application.application instance at 0x1f8d3b0>
我还添加了http.conf文件中建议的
Files
标记,这似乎是多余的,因为我已经设置了
htdocs
dir,但无论如何。下面是我的
httpd.conf
文件,我重新启动了apache,仍然收到导入错误消息

ServerRoot "/home/usr1/webapps/test/apache2"

LoadModule dir_module        modules/mod_dir.so
LoadModule env_module        modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule setenvif_module   modules/mod_setenvif.so
LoadModule wsgi_module       modules/mod_wsgi.so

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/usr1/webapps/test/logs combined
DirectoryIndex index.py
DocumentRoot /home/usr1/webapps/test/htdocs
ErrorLog /home/usr1/webapps/test/apache2/logs/error_test.log
KeepAlive Off
Listen 21708
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
SetEnvIf X-Forwarded-SSL on HTTPS=1
ThreadsPerChild 5
WSGIDaemonProcess test processes=5 python-path=/home/usr1/webapps/test/lib/python3.1 threads=1
WSGIProcessGroup test
WSGIRestrictEmbedded On
WSGILazyInitialization On

<Directory /home/usr1/webapps/test/htdocs>
    AddHandler wsgi-script .py
</Directory>

<Files /home/usr1/webapps/test/htdocs/index.py>
   SetHandler wsgi-script
   Options ExecCgi FollowSymLinks
</Files>
ServerRoot”/home/usr1/webapps/test/apache2“
LoadModule dir\u modules/mod\u dir.so
LoadModule env_modules/mod_env.so
LoadModule log\u config\u module modules/mod\u log\u config.so
LoadModule mime_modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule wsgi_modules/mod_wsgi.so
日志格式“%{X-Forwarded-For}i%l%u%t\%r\”%>s%b\“%{Referer}i\\”\“%{User Agent}i\”组合
CustomLog/home/usr1/webapps/test/logs组合
DirectoryIndex.py
DocumentRoot/home/usr1/webapps/test/htdocs
ErrorLog/home/usr1/webapps/test/apache2/logs/error\u test.log
拒之门外
听着21708
MaxSpareThreads 3
Minspare1
服务器限制1
HTTPS=1上的SetEnvIf X-Forwarded-SSL
螺纹锉刀5
wsgidaemonprocesstestprocesss=5 python路径=/home/usr1/webapps/test/lib/python3.1线程=1
WSGIProcessGroup测试
WSGirestricton嵌入式
WSGilazyin的初始化
AddHandler wsgi script.py
SetHandler wsgi脚本
选项ExecCgi FollowSymLinks

首先,您的apache mod_wsgi似乎是用python 3编译的,而web.py不支持python 3

您的apache配置与我在Web派系上的配置非常相似,如果有一个安装了Python2.7的mod_wsgi的安装程序,您必须选择它而不是Python3

这就是我的典型配置:

ServerRoot "/home/username/webapps/projectname/apache2"

LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule alias_module modules/mod_alias.so
LoadModule wsgi_module       modules/mod_wsgi.so

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/username/logs/user/access_projectname.log combined
ErrorLog /home/username/logs/user/error_projectname.log
KeepAlive Off
Listen 21708
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
WSGIPythonOptimize 2
ThreadsPerChild 5
WSGIDaemonProcess projectname processes=5 threads=1
WSGIPythonHome /home/username/lib/python2.7 # your python home dir where libraries are installed
WSGIProcessGroup projectname
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/username/webapps/projectname/htdocs/code.py/
Alias /static /home/username/webapps/projectname/htdocs/static
这是示例code.py

#!/usr/bin/env python
import os
import sys
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
from app import app

if __name__ == "__main__":
    app.run()
else:
    application = app.wsgifunc()

首先,您的apachemod_wsgi似乎是用python3编译的,而web.py不支持这一点

您的apache配置与我在Web派系上的配置非常相似,如果有一个安装了Python2.7的mod_wsgi的安装程序,您必须选择它而不是Python3

这就是我的典型配置:

ServerRoot "/home/username/webapps/projectname/apache2"

LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule alias_module modules/mod_alias.so
LoadModule wsgi_module       modules/mod_wsgi.so

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/username/logs/user/access_projectname.log combined
ErrorLog /home/username/logs/user/error_projectname.log
KeepAlive Off
Listen 21708
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
WSGIPythonOptimize 2
ThreadsPerChild 5
WSGIDaemonProcess projectname processes=5 threads=1
WSGIPythonHome /home/username/lib/python2.7 # your python home dir where libraries are installed
WSGIProcessGroup projectname
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/username/webapps/projectname/htdocs/code.py/
Alias /static /home/username/webapps/projectname/htdocs/static
这是示例code.py

#!/usr/bin/env python
import os
import sys
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
from app import app

if __name__ == "__main__":
    app.run()
else:
    application = app.wsgifunc()

您可以记录sys.path并检查此模块是否在此路径中。而且,如果您在wsgi-script.py中显示所需内容,也会很酷。还要比较shell和apache使用的python版本(我可以看到apache使用python 3.1)@DenisNikanorov:OK,那么httpd.conf是由我的webhost生成的,是的,python 3.1与我的shell(2.6)不同。因此,我改变了这一点,现在我得到了一个名为utils的
ImportError:No模块(即web.py导入):S。我似乎无法在任何我可以访问的地方找到
wsgi脚本。这是我需要和我的主人联系的事情吗?我遇到了和你一样的错误。你的程序错误修复了吗?它是如何修复的??谢谢!您可以记录sys.path并检查此模块是否在此路径中。而且,如果您在wsgi-script.py中显示所需内容,也会很酷。还要比较shell和apache使用的python版本(我可以看到apache使用python 3.1)@DenisNikanorov:OK,那么httpd.conf是由我的webhost生成的,是的,python 3.1与我的shell(2.6)不同。因此,我改变了这一点,现在我得到了一个名为utils的
ImportError:No模块(即web.py导入):S。我似乎无法在任何我可以访问的地方找到
wsgi脚本。这是我需要和我的主人联系的事情吗?我遇到了和你一样的错误。你的程序错误修复了吗?它是如何修复的??谢谢!如果直接导入
app
,如何将URL映射到该code.py?与
app=web.application(url,globals())
相反,我在另一个模块中初始化app并将其导入code.py,我使用web.autoapplication,其中控制器指定其URL(),但这超出了本问题的范围。如果直接导入
app
,如何将URL映射到该code.py?与
app=web.application(URL,globals())
相反,我在另一个模块中初始化app并将其导入code.py,我使用web.autoapplication,其中控制器指定其URL(),但这超出了这个问题的范围