将mod_wsgi从python3.5更改为3.6

时间:2018-03-04 15:15:19

标签: apache2 python-3.5 mod-wsgi python-3.6

我有一个烧瓶应用,曾经在apache2上运行python3.5。 我现在正在尝试将其更改为在3.6上运行(我的代码中的sone类型提示仅支持3.6)。

我已经为python3.6安装了模块,但是当试图重启apache并运行我的应用程序时,它失败了。
运行时

mod_wsgi-express module-location

我有python3.5版本

/usr/local/lib/python3.5/dist-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so

我的服务器上的python3.6目录中也存在同一个文件。 我还改变了我的$ PATH来运行python3.6作为python的默认值。
如何告诉apache在python3.6上运行而不在3.5上运行?

3 个答案:

答案 0 :(得分:5)

WOHA!它正在工作!
我卸载了mod_wsgi(sudo apt get remove libapache2-mod-wsgi)。 然后,通过pip专门安装模块到python3.6(python3.6 -m pip install mod_wsgi),但此时apache仍然运行python3.5。
我添加到apache配置文件(在ubunutu 16.4中,文件是位于:/etc/apache2/apache2.conf/usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so用于RHEL / CentOS 7)以下内容:
LoadModule wsgi_module "/usr/local/lib/python3.6/dist-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"

WSGIPythonHome "/usr"这就是诀窍。 我在这个问题上花了很多的眼泪,找到了apache2.conf文件等,所以希望这对任何人都有帮助。

答案 1 :(得分:0)

LoadModule解决方案为我工作。但是,我发现首先确保最简单 a2dismod wsgi,由默认的apache2模块提供。我花了三天的时间查看各种解决方案和答案,并查看Graham的WSGI指南。

答案 2 :(得分:0)

在我的情况下,我所做的是从 Django env 中删除 python 3.6 并重新安装 python 3.5 并且它起作用了。