【问题标题】:Python Anywhere Django App Import ErrorPython Anywhere Django 应用程序导入错误
【发布时间】:2017-08-04 13:06:51
【问题描述】:

尝试在 Python Anywhere 上运行 django 应用时出现以下导入错误:

Error running WSGI application
ImportError: No module named 'chamberlin.settings'
  File "/var/www/mikechamberlin_pythonanywhere_com_wsgi.py", line 58, in <module>
    application = get_wsgi_application()

我已经检查了我的 WSGI 配置文件和我的目录结构,它们似乎都是正确的。

WSGI 文件:

import os
import sys

path = '/home/mikechamberlin/chamberlin'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'chamberlin.settings'

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

树:

mikechamberlin
├── ...
├── chamberlin
    ├── __init__.py
    ├── chamberlin
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── private_settings.py
    │   ├── settings.py
    │   ├── static
    ...

谁能看到我没看到的东西?我已经在这里搜索并阅读了 PythonAnywhere 上的 ImportError 帮助消息,但我的东西似乎命名正确。从控制台导入有效,但在尝试运行应用程序时仍然出现此错误。

非常感谢。

【问题讨论】:

  • wsgi.py 所在的位置。请在树上显示它。
  • 树很大,但是wsgi文件位于/var/www/(domain)_wsgi.py上面的树位于/home/mikechamberlin/chamberlin
  • 您是说wsgi.py 位于chamberlin/ 目录之外?
  • 哦,不。对不起。它在home/mikechamberlin/chamberlin/chamberlin
  • 您可能会遇到模块别名。尝试将sys.path.append(path) 更改为sys.path.insert(0, path),以便您的设置模块在sys.path 中排在第一位

标签: python django pythonanywhere


【解决方案1】:

我之前在 pythonanywhere 上部署时也遇到过同样的困难,但是我尝试了所有可能的组合来暴露我的 settings.py 的位置。

import os 
import sys

path = '/home/garapkan/Garap/garap_v2/'
print(path)

if path not in sys.path:
sys.path.insert(0, path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler

application = StaticFilesHandler(get_wsgi_application())

并确保路径位于 sys.path 的第一个顺序中,将其插入第一行而不是追加。阅读@glenn 对问题的评论。 我发现它对我有用。希望这种方式也适用于其他人。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2012-07-24
    • 1970-01-01
    • 2015-01-10
    • 2011-01-20
    • 1970-01-01
    • 2019-07-03
    • 2019-07-21
    • 1970-01-01
    相关资源
    最近更新 更多