簡體   English   中英

使用apache&mod_wsgi部署時,Django無法在應用程序的子目錄中導入類

[英]Django can't import class in subdir of app when deployed with apache&mod_wsgi

我在帶有Python 2.6.6的centos6.5中使用Django(1.5.12)和httpd-2.2.15-29。

真的很奇怪,我被困住了。 請幫我!

我的項目樹如下所示:

/opt/django-demo
|-- api
|   |-- __init__.py
|   |-- **views.py**
|   |-- utils
|   |   |-- __init__.py
|   |   |-- **debug.py**
|-- demo
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   |-- wsgi.py

我需要在views.py中導入utils.debug

from api.utils import debug

它可以在django runserver中工作,但不能在apache中工作:

Request Method: GET
Request URL:    http://xxxxx/xxxx/
Django Version: 1.5.12
Exception Type: ImportError
Exception Value: No module named utils
Exception Location: /opt/django-demo/api/debug.py in <module>, line 9
Python Executable:  /usr/bin/python
Python Version: 2.6.6
Python Path:    
['/opt/django-demo',
 '/usr/lib/python2.6/site-packages/pip-7.1.2-py2.6.egg',
 '/usr/lib64/python26.zip',
 '/usr/lib64/python2.6',
 '/usr/lib64/python2.6/plat-linux2',
 '/usr/lib64/python2.6/lib-tk',
 '/usr/lib64/python2.6/lib-old',
 '/usr/lib64/python2.6/lib-dynload',
 '/usr/lib64/python2.6/site-packages',
 '/usr/lib64/python2.6/site-packages/gst-0.10',
 '/usr/lib64/python2.6/site-packages/gtk-2.0',
 '/usr/lib64/python2.6/site-packages/webkit-1.0',
 '/usr/lib/python2.6/site-packages',
 '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info',
 '/opt/django-demo/api/utils']

從您可以看到的錯誤中,wsgi.py已在PYTHONPATH中添加了該子目錄。 而且不缺少__init__.py

我將utils / debug.py轉換為api / debug.py之后:

from api import debug

有用!!!

所以為什么?

終於解決了問題。 似乎debug.py中有錯誤,需要導入。 修復錯誤后,該錯誤消失。

在PYTHONPATH中甚至不需要添加'/ opt / django-demo / api / utils'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM