【发布时间】:2012-01-04 17:09:36
【问题描述】:
我有一个 Django 项目,其中有一个名为 subscribe 的应用程序。在根 urls.py 中,我使用来自 subscribe 的 urls.py 的包含。
我在INSTALLED_APPSsubscribe 和subscribe 的urls.py 中使用subscribe.views.<name> 来表达我的观点。当服务器在本地以python manage.py runserver 运行时,一切正常。但是当服务器在带有 virtualenv 的 nginx+uwsgi 上运行时,我得到了ImportError: No module named subscribe。
当我在INSTALLED_APPS 和subscribe 的urls.py 中将subscribe 更改为project.subscribe 时,将subscribe.views.<name> 更改为project.subscribe.views.<name> 一切正常。
uwsgi 配置:
[uwsgi]
socket = 127.0.0.1:9003
workers = 2
master = true
virtualenv = /home/user/python
chdir = /home/user
env = DJANGO_SETTINGS_MODULE=project.settings
module = django.core.handlers.wsgi:WSGIHandler()
daemonize = /home/user/uwsgi.log
为什么我应该使用绝对路径导入以及如何在 nginx+uwsgi 上使用 virtualenv 将其更改为相对路径?
【问题讨论】:
-
通过 virtualenv 启动脚本或其他方式将
project添加到您的 python 路径 -
我的启动脚本已经包含它:sys.path.insert(0, '/home/user/project')
-
以 init.py 作为包的 Django 威胁文件夹,并在
wsgi脚本中将/home/user/project设置为根目录,因此它应该像 @987654343 一样工作@ 有效。 -
@GuilhermeDaviddaCosta 是的,所有目录项目和所有子目录都有一个 init.py 文件,但是如果我在已安装的应用程序中将“project.subscribe”更改为“subscribe”,我收到导入错误。
-
你能提供 uwsgi 配置吗?
标签: django import nginx virtualenv uwsgi