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')
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')