我正在使用Apache2,Python 3.6.1在Ubuntu上工作。我按照此处的说明使用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时,它等于上面的WSGIPythonPath中的值。
是的,我已经激活了虚拟环境。 对于我的环境变量,我有:
PATH = /home/user/myproject/myprojectenv/bin:$PATH
PYTHONPATH = /home/user/myproject/myprojectenv/bin:$PYTHONPATH
PYTHONHOME = not set
我尝试设置和不设置环境变量的各种组合。我尝试过的都没有奏效。
当我按照上面的链接中的步骤进行操作时,我不确定是否为Python 3.6.1构建了新的mod_wsgi。我曾尝试(在我的VM的另一个副本上)显式构建Python共享库并以此构建mod_wsgi。它失败了。除非我确定那是我要做的,否则我会犹豫要再次走那条路。
非常感谢您的帮助。
答案 0 :(得分:0)
我确实通过了此错误。正如@Alasdair指出的那样,我确实需要使用共享库构建Python,然后使用该版本的Python构建mod_wsgi。我按照这里的指示进行:Compiling mod_wsgi for a custom Python Build
唯一的区别是,我需要在“ make install”之前添加“ sudo”,这样权限才能很好地将模块放在/ usr / bin / apache2 / modules目录中。
我还需要确保LD_LIBRARY_PATH能够识别python库(我在加载共享库时收到“错误:libpython3.6m.so.1.0:无法打开共享库文件:没有此类文件或目录”错误)。该错误已使用“ ldconfig”清除。
我仍然遇到Apache问题,我将单独编写该问题,但这使我克服了“编码”问题。