让 mod_wsgi 使用 python2.7.2 而不是 python2.6?

gur*_*ron 5 python django mod-wsgi

我正在运行 Ubuntu 10.04.1 LTS,它预装了 python2.6,但我需要用 python2.7.2 替换它。

(原因很简单,2.7 有很多从 3 向后移植的特性)

我已经安装了 python2.7.2 使用

./configure
make
make altinstall
Run Code Online (Sandbox Code Playgroud)

altinstall 选项将它安装到 /usr/local/lib/python2.7 并将解释器放置在 /usr/local/bin/python2.7 中,而不涉及系统默认版本

然后为了帮助 mod_wsgi 找到 python2.7,我将以下内容添加到 /etc/apache2/sites-available/wsgisite

WSGIPythonHome /usr/local
Run Code Online (Sandbox Code Playgroud)

我启动了 apache 并运行了一个测试 wsgi 应用程序,但是迎接我的是python 2.6.5 而不是 Python2.7

后来我替换了默认的 python simlink 指向 python 2.7

ln -f /usr/local/bin/python2.7 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

现在在控制台上输入 'python' 会打开 python2.7 但不知何故 mod_wsgi 仍然会选择 python2.6

接下来我尝试,

PATH=/usr/local/bin:$PATH
export PATH
Run Code Online (Sandbox Code Playgroud)

然后快速重启apache,但又是python2.6!


这是我的 $PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/sites-available/wsgisite 的内容

WSGIPythonHome /usr/local


<VirtualHost *:80>

    ServerName wsgitest.local
    DocumentRoot /home/wwwhost/pydocs/wsgi
    <Directory /home/wwwhost/pydocs/wsgi>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIScriptAlias / /home/wwwhost/pydocs/wsgi/app.wsgi

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

应用程序.wsgi

import sys

def application(environ, start_response):
    status = '200 OK'
    output = sys.version

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

    return [output]
Run Code Online (Sandbox Code Playgroud)

Apache 错误日志

'import site' failed; use -v for traceback
[Sun Jun 19 00:27:21 2011] [info] mod_wsgi (pid=23235): Initializing Python.
[Sun Jun 19 00:27:21 2011] [notice] Apache/2.2.14 (Ubuntu) mod_wsgi/2.8 Python/2.6.5 configured -- resuming normal operations
[Sun Jun 19 00:27:21 2011] [info] Server built: Nov 18 2010 21:20:56
[Sun Jun 19 00:27:21 2011] [info] mod_wsgi (pid=23238): Attach interpreter ''.
[Sun Jun 19 00:27:21 2011] [info] mod_wsgi (pid=23239): Attach interpreter ''.
[Sun Jun 19 00:27:31 2011] [info] mod_wsgi (pid=23238): Create interpreter 'wsgitest.local|'.
[Sun Jun 19 00:27:31 2011] [info] [client 192.168.1.205] mod_wsgi (pid=23238, process='', application='wsgitest.local|'): Loading WSGI script '/home/wwwhost/pydocs/$
[Sun Jun 19 00:27:50 2011] [info] mod_wsgi (pid=23239): Create interpreter 'wsgitest.local|'.
Run Code Online (Sandbox Code Playgroud)

有没有人设法让 mod_wsgi 在非系统默认版本的 python 上运行?

Mar*_* M. 2

您需要重新编译mod_wsgi too. 仅仅重新编译 python 是不够的(不要忘记加载正确的版本mod_wsgi

编辑:单击此处获取安装说明