python - mod_wsgi 报告 Pyramid 模块中的语法错误

标签 python apache mod-wsgi pyramid

我刚刚安装完 mod_wsgi,但在启动我的 Pyramid 应用程序时遇到问题。

我在 CentOS 5.8 上使用 python 2.7、Apache 2.2.3、mod_wsgi 3.4

这是我的 httpd.config 文件

WSGISocketPrefix run/wsgi

<VirtualHost *:80>
 ServerName  myapp.domain.com
 ServerAlias myapp
 WSGIApplicationGroup %{GLOBAL}
 WSGIPassAuthorization On
 WSGIDaemonProcess pyramid user=apache group=apache  processes=1 threads=4 \
   python-path=/var/wsgi_sites/site-packages
 WSGIScriptAlias / /var/wsgi_sites/myapp/apache.wsgi

<Directory /var/wsgi_sites/myapp>
  WSGIProcessGroup pyramid
  Order allow,deny
  Allow from all
</Directory>

  LogLevel debug
  ErrorLog /var/log/httpd/myapp_error
</VirtualHost>

我已将站点包、python-eggs 和 myapp 文件夹的所有权授予 Apache。

我用来创建 WSGI 应用程序 appache.wsgi 的模块包含以下代码

import os
os.environ['PYTHON_EGG_CACHE'] = '/var/wsgi_sites/python-eggs'

from pyramid.paster import get_app
application = get_app('/var/wsgi_sites/myapp/development.ini','main')

当我重新启动 Apache 并尝试访问应用程序时,出现以下错误

mod_wsgi (pid=14842, process='pyramid', application=''): Loading WSGI script '/var/wsgi_sites/myapp/apache.wsgi'.
mod_wsgi (pid=14842): Target WSGI script '/var/wsgi_sites/myapp/apache.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=14842): Exception occurred processing WSGI script '/var/wsgi_sites/myapp/apache.wsgi'.
Traceback (most recent call last):
File "/var/wsgi_sites/myapp/apache.wsgi", line 4, in ?
from pyramid.paster import get_app
File "/var/wsgi_sites/site-packages/pyramid-1.3.2-py2.7.egg/pyramid/__init__.py", line 1, in ?
from pyramid.request import Request
File "/var/wsgi_sites/site-packages/pyramid-1.3.2-py2.7.egg/pyramid/request.py", line 
class Request(BaseRequest, DeprecatedRequestMethodsMixin, URLMethodsMixin,
    ^
SyntaxError: invalid syntax

我试着查看 request.py 文件,但没有语法错误。

最佳答案

通常,当您遇到语法错误时,前一行就是罪魁祸首。看着the Pyramid source我们看到前面一行是:

@implementer(IRequest)

这是一个类装饰器。 Python 2.6 版本中添加了类装饰器。 CentOS 5.8 上的默认 Python 版本是 2.4。

您的解决方案是:
1. 使用具有更新版本的 Python 的操作系统,或者
2. 确保您的 Pyramid 应用程序使用 2.7 版本。这包括安装 Python 2.7 以及系统的默认 Python 安装,其他应用程序使用它并且必须单独安装。

如果您选择安装 2.7,您将执行如下操作:

$ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
$ tar xf Python-2.7.3.tar.bz2
$ cd Python-2.7.3
$ ./configure --prefix=/usr/local
$ make && make altinstall

关于python - mod_wsgi 报告 Pyramid 模块中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693256/

相关文章:

python - Django 模型过滤空字符串

python:找到一组的所有拉丁方(或列数较少的部分方)

php - 删除 .htaccess 中的 .php 扩展名不起作用

apache - Dry adOpt(并行分支和绑定(bind)库) - 可用性

django - 在子目录上配置 django

python - 使用自定义 mod_wsgi 和 python 对共享服务器的访问受到限制

python - 错误: Not enough arguments for format string

python - .split() 序列不能多次工作

apache - HTTP ://localhost/phppgadmin/-> 403 Forbidden

python - modwsgi 和 mysql。查询仅显示触及 wsgi 文件后的实际结果