将 mod_wsgi 从 python3.5 更改为 3.6

Change mod_wsgi from python3.5 to 3.6

我有一个 flask 应用程序,它曾经在 apache2 上 运行 和 python3.5。 我现在正尝试在 3.6 上将其更改为 运行(我的代码中有一些仅在 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 上 运行?

哇哈!有效!
我卸载了 mod_wsgi (sudo apt get remove libapache2-mod-wsgi)。 然后,通过 pip 将模块专门安装到 python3.6 (python3.6 -m pip install mod_wsgi),但此时 apache 仍然 运行 python3.5.
I添加到 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 for 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 文件等,希望这对任何人都有帮助。

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

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