Apache WSGI 没有名为 django 的模块 whitout virtualenv

Apache WSGI no module named django whitout virtualenv

wsgi.py:

import os,sys

sys.path.append('/var/www/html/yuyyu/yuyyu')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yuyyu.settings")

from django.core.wsgi import get_wsgi_application

application = get_wsgi_application()

apache.conf:

...


        WSGIDaemonProcess yuyyu python-path=/var/www/html/yuyyu

        WSGIProcessGroup yuyyu
        WSGIScriptAlias / /var/www/html/yuyyu/yuyyu/wsgi.py \
                 process-group=yuyyu application-group=%{GLOBAL}
 ...

这是我在 error.log 中的错误:

[Fri Dec 02 19:07:55.862266 2016] [:error] [pid 1414] [remote 213.14.244.3:2784] mod_wsgi (pid=1414): Target WSGI script '/var/www/html/yuyyu/yuyyu/wsgi.py' cannot be loaded as Python module.
[Fri Dec 02 19:07:55.862323 2016] [:error] [pid 1414] [remote 213.14.244.3:2784] mod_wsgi (pid=1414): Exception occurred processing WSGI script '/var/www/html/yuyyu/yuyyu/wsgi.py'.
[Fri Dec 02 19:07:55.862353 2016] [:error] [pid 1414] [remote 213.14.244.3:2784] Traceback (most recent call last):
[Fri Dec 02 19:07:55.862393 2016] [:error] [pid 1414] [remote 213.14.244.3:2784]   File "/var/www/html/yuyyu/yuyyu/wsgi.py", line 23, in <module>
[Fri Dec 02 19:07:55.862398 2016] [:error] [pid 1414] [remote 213.14.244.3:2784]     from django.core.wsgi import get_wsgi_application
[Fri Dec 02 19:07:55.862418 2016] [:error] [pid 1414] [remote 213.14.244.3:2784] ImportError: No module named 'django'

我的项目路径是/var/www/html/yuyyu/

我的wsgi文件路径是/var/www/html/yuyyu/yuyyu/

我也得到 500 内部服务器错误和 我没有使用 virtualenv,所以我能做些什么来解决这个问题?

WSGIDaemonProcess yuyyu python-path=/var/www/html/yuyyu

我认为你的问题出在这里,python-path 不应该是你的 django 项目的路径,而是你的 python 库的路径(例如 python 的路径的安装 django 的 site-packages 目录。

例如,对我来说,这条路径是 /usr/lib/python3.5/site-packages

这是我的解决方案,我的 django 安装到

/usr/lib/python2.7/dist-packages

然后我像这样更改我的 .conf 文件

WSGIDaemonProcess yuyyu python-path=/usr/local/lib/python2.7/dist-packages
WSGIProcessGroup yuyyu
WSGIScriptAlias / /var/www/html/yuyyu/yuyyu/wsgi.py

在 wsgi.py 中尝试加载 Django 所在的路径。在我的配置中,它位于 virtualenv 内部,路径如下所示:

import site
site.addsitedir('~/virtualenvs/myenv/lib/python3.5/site-packages')