【问题标题】:No module named wsgi没有名为 wsgi 的模块
【发布时间】:2015-08-06 16:15:21
【问题描述】:

这就是我的Procfile

web: gunicorn --pythonpath meraki meraki.wsgi

当我执行foreman start 时,我收到此错误:

gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

据我在回溯中看到的原因是:

ImportError: No module named wsgi

我在shell中做了import wsgi,导入成功,没有错误。

为什么我不能开始foreman

项目结构:

meraki
  meraki
      //other apps
      meraki
          settings
          __init__.py
          celery.py
          views.py
          wsgi.py
      manage.py
  Procfile
  requirements
  requirements.txt

【问题讨论】:

  • 你能发布你的项目结构吗?
  • 为什么要添加pythonpath参数?
  • 您是否未能将__init__.py 列为与上述结构中的wsgi.py 存在于同一目录中?您必须拥有它才能使其正常工作。这是一个关键文件,如果它确实存在,不列出它,会导致对问题做出许多错误的结论。
  • @GrahamDumpleton 你是对的。我更新了问题。谢谢你:)

标签: python django heroku gunicorn foreman


【解决方案1】:

您因遵循不必要的复杂结构而感到困惑。您不需要那个外部 meraki 目录,并且您的 Procfile 和 requirements.txt 应该与 manage.py 位于同一目录中。然后你可以删除pythonpath参数,一切都应该很好。

【讨论】:

  • 你是对的。我试着把它们移到里面,它奏效了。我只是遵循two scoops of django 书中给出的建议。此外,这不是我第一次使用这种结构,它曾经可以正常工作:) 我想知道这里发生了什么:) 作为最后的手段,我会按照你的建议做。谢谢:)
【解决方案2】:

正如罗斯曼所说,这是不必要的复杂结构。如果你想这样做,请尝试

web: gunicorn --pythonpath /path/to/meraki meraki.wsgi

/absolutepath/to/secondmeroki(out of 3),其中包含apps

【讨论】:

  • 感谢您的回答。但是当我在生产中部署绝对路径时它不起作用:) 所以我认为正如你们所建议的那样,我将简化结构并将Procfile 移动到里面
  • 是的,否则,您必须为您的作品设置不同的设置。
猜你喜欢
  • 2012-07-16
  • 2020-01-15
  • 1970-01-01
  • 2017-06-22
  • 2018-08-08
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多