gpt4 book ai didi

apache - 如何让 apache 使用 python3.6 及其模块?

转载 作者:行者123 更新时间:2023-12-04 18:27:52 25 4
gpt4 key购买 nike

我有一个用 flask 编写并为 python3.6 构建的网站。我正在尝试使用 apache 部署我的网站并且遇到了问题。

我使用以下命令安装了 wsgi:sudo apt-get install libapache2-mod-wsgi-py3
我使用以下方法安装了 python3.6:sudo apt-get install python3.6 .

因为它是专门用于这个单一站点的服务器,所以我使用 pip3.6 全局安装了我的 python 模块,而不是在 virtualenv 中,所以我所有需要/安装的模块都位于 /usr/local/lib/python3.6/dist-packages/ .

我一直无法弄清楚如何让 apache 使用 python3.6 及其模块。默认情况下,用于服务的 python apache 版本是 3.5,系统默认 python3 版本(我通过在我的 .wsgi 文件中打印 sys.version_info 来验证这一点)。因此,我的任何模块都不在路径中。

环顾四周后,我发现了 apache 配置选项 WSGIPythonHomeWSGIPythonPath .我已尝试将这些添加到我的 apache.conf在不同的组合中,但没有任何效果。以下是我尝试过的以及错误是什么。

# /etc/apache2/apache.conf
WSGIPythonHome /usr/local/lib/python3.6

# /var/log/apache2/error.log
Current thread 0x00007fc69bac4e00 (most recent call first):
[Sun Jan 14 23:02:04.732187 2018] [core:notice] [pid 7139:tid 140490992012800] AH00051: child pid 7154 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
# /etc/apache2/apache.conf
WSGIPythonHome /usr/local/lib/python3.6
WSGIPythonPath /usr/local/lib/python3.6

# /var/log/apache2/error.log
Current thread 0x00007fc69bac4e00 (most recent call first):
[Sun Jan 14 23:02:04.732187 2018] [core:notice] [pid 7139:tid 140490992012800] AH00051: child pid 7154 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
# /etc/apache2/apache.conf
WSGIPythonHome /usr/local/
WSGIPythonPath /usr/local/lib/python3.6

# /var/log/apache2/error.log
Current thread 0x00007fc69bac4e00 (most recent call first):
[Sun Jan 14 23:02:04.732187 2018] [core:notice] [pid 7139:tid 140490992012800] AH00051: child pid 7154 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
# /etc/apache2/apache.conf
WSGIPythonHome /usr/local/lib/python3.6
WSGIPythonPath /usr/local/lib/python3.6

# /var/log/apache2/error.log
Current thread 0x00007fc69bac4e00 (most recent call first):
[Sun Jan 14 23:02:04.732187 2018] [core:notice] [pid 7139:tid 140490992012800] AH00051: child pid 7154 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
# /etc/apache2/apache.conf
WSGIPythonHome /usr/local/lib/python3.6
WSGIPythonPath /usr/local/lib/python3.6/dist-packages

# /var/log/apache2/error.log
Current thread 0x00007fc69bac4e00 (most recent call first):
[Sun Jan 14 23:02:04.732187 2018] [core:notice] [pid 7139:tid 140490992012800] AH00051: child pid 7154 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
# /etc/apache2/apache.conf
WSGIPythonPath /usr/local/lib/python3.6

# /var/log/apache2/error.log
Using python version 3.5
Module flask not found
# /etc/apache2/apache.conf
WSGIPythonPath /usr/local/lib/python3.6/dist-packages

# /var/log/apache2/error.log
Using python version 3.5
Module flask not found

无论如何,我认为我在正确的轨道上,但无法弄清楚我做错了什么。看来我没有使用正确的 PythonHome但如果不是上述之一,我不确定它应该是什么。

任何帮助将不胜感激。

最佳答案

您不能强制为一个 Python 版本编译的 mod_wsgi 为不同的版本使用不同的 Python 安装。这是因为 mod_wsgi 实际上为它编译的版本链接了 Python 库,它不只是运行 python一些任意版本的程序。

您唯一能做的就是从系统包(使用 Python 3.5)中卸载 mod_wsgi,然后自己从源代码中安装 mod_wsgi,然后针对 Python 3.6 进行编译。

此外,您给出的路径都不是WSGIPythonHomeWSGIPythonPath无论如何都是正确的。从源代码安装 mod_wsgi 时,不要设置这些指令,因为它们会继续搞砸。

关于apache - 如何让 apache 使用 python3.6 及其模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48255834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com