我有一个烧瓶应用,曾经在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上运行?
答案 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 并且它起作用了。