Apache2 on Ubuntu gives Py_Initialize ImportError: No module named encodings
Apache2 on Ubuntu gives Py_Initialize ImportError: No module named encodings
我正在使用 Apache2 Ubuntu Python 3.6.1。我按照此处的说明使用 Django 和 mod_wsgi 进行设置:How To Serve Django Applications with Apache and mod_wsgi on Ubuntu 14.04
我看了很多类似的问题,但仍然无法解决问题。 Apache 错误日志不断喷出“ImportError:没有名为 'encodings' 的模块。
以下是我的 Apache2 文件中的相关设置:
在 000-default.conf:
WSGIDaemonProcess myproject python-home=/home/user/myproject/myprojectenv/ python-path=/home/user/myproject/myprojectenv/bin/python
WSGIProcessGroup myproject
WSGIScriptAlias / /home/user/myproject/myprojectenv/myproject/myproject/wsgi.py
在apache2.conf中:
WSGIPythonPath /home/user/myproject/myprojectenv
请注意,当我检查 sys.prefix 时,它等于我在上面的 WSGIPython 路径中的内容。
是的,我已经激活了虚拟环境。
对于我的环境变量,我有:
PATH = /home/user/myproject/myprojectenv/bin:$PATH
PYTHONPATH = /home/user/myproject/myprojectenv/bin:$PYTHONPATH
PYTHONHOME = not set
我尝试了设置和未设置环境变量的各种组合。 None 我试过的有效。
当我按照上述 link 中的步骤操作时,我不确定是否为 Python 3.6.1 构建了新的 mod_wsgi。我曾尝试(在我的 VM 的另一个副本上)显式构建一个 Python 共享库并用它构建 mod_wsgi。它惨遭失败。我犹豫是否要再次走那条路,除非我确定那是我需要做的。
非常感谢任何帮助。
我确实通过了这个错误。正如@Alasdair 指出的那样,我确实需要使用共享库构建 Python,然后使用该版本的 Python 构建 mod_wsgi。我按照这里的指示操作:Compiling mod_wsgi for a custom Python Build
唯一的区别是我需要在 'make install' 之前添加 'sudo' 以便将模块放在 /usr/bin/apache2/modules 目录中的权限很好。
我还需要确保 LD_LIBRARY_PATH 识别了 python 库(我收到 "error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory" 错误)。使用 'ldconfig'.
清除了该错误
我仍然遇到 Apache 问题,我将单独写出来,但这让我通过了 'encodings' 问题。
我正在使用 Apache2 Ubuntu Python 3.6.1。我按照此处的说明使用 Django 和 mod_wsgi 进行设置:How To Serve Django Applications with Apache and mod_wsgi on Ubuntu 14.04
我看了很多类似的问题,但仍然无法解决问题。 Apache 错误日志不断喷出“ImportError:没有名为 'encodings' 的模块。
以下是我的 Apache2 文件中的相关设置:
在 000-default.conf:
WSGIDaemonProcess myproject python-home=/home/user/myproject/myprojectenv/ python-path=/home/user/myproject/myprojectenv/bin/python
WSGIProcessGroup myproject
WSGIScriptAlias / /home/user/myproject/myprojectenv/myproject/myproject/wsgi.py
在apache2.conf中:
WSGIPythonPath /home/user/myproject/myprojectenv
请注意,当我检查 sys.prefix 时,它等于我在上面的 WSGIPython 路径中的内容。
是的,我已经激活了虚拟环境。 对于我的环境变量,我有:
PATH = /home/user/myproject/myprojectenv/bin:$PATH
PYTHONPATH = /home/user/myproject/myprojectenv/bin:$PYTHONPATH
PYTHONHOME = not set
我尝试了设置和未设置环境变量的各种组合。 None 我试过的有效。
当我按照上述 link 中的步骤操作时,我不确定是否为 Python 3.6.1 构建了新的 mod_wsgi。我曾尝试(在我的 VM 的另一个副本上)显式构建一个 Python 共享库并用它构建 mod_wsgi。它惨遭失败。我犹豫是否要再次走那条路,除非我确定那是我需要做的。
非常感谢任何帮助。
我确实通过了这个错误。正如@Alasdair 指出的那样,我确实需要使用共享库构建 Python,然后使用该版本的 Python 构建 mod_wsgi。我按照这里的指示操作:Compiling mod_wsgi for a custom Python Build
唯一的区别是我需要在 'make install' 之前添加 'sudo' 以便将模块放在 /usr/bin/apache2/modules 目录中的权限很好。
我还需要确保 LD_LIBRARY_PATH 识别了 python 库(我收到 "error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory" 错误)。使用 'ldconfig'.
清除了该错误我仍然遇到 Apache 问题,我将单独写出来,但这让我通过了 'encodings' 问题。