【问题标题】:Django uwsgi import errorDjango uwsgi 导入错误
【发布时间】:2012-01-04 17:09:36
【问题描述】:

我有一个 Django 项目,其中有一个名为 subscribe 的应用程序。在根 urls.py 中,我使用来自 subscribeurls.py 的包含。

我在INSTALLED_APPSsubscribesubscribeurls.py 中使用subscribe.views.<name> 来表达我的观点。当服务器在本地以python manage.py runserver 运行时,一切正常。但是当服务器在带有 virtualenv 的 nginx+uwsgi 上运行时,我得到了ImportError: No module named subscribe。 当我在INSTALLED_APPSsubscribeurls.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


【解决方案1】:

您的 uwsgi 配置应包含 pythonpath=/path/where/lives/settings.py/ 指令,以便 python 解释器知道在哪里可以找到您的应用程序。

查找有关 uwsgi 配置选项的更多信息:

【讨论】:

  • 感谢您的回答和非常有用的链接!
  • 在花费了无数个小时试图弄清楚这一点之后,您的回答措辞有所帮助。非常感谢:)
猜你喜欢
  • 2012-02-28
  • 1970-01-01
  • 2014-04-10
  • 2015-03-31
  • 2013-10-22
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2016-04-18
相关资源
最近更新 更多