7

我正在尝试在 Pythonanywhere 上设置一个 Django 应用程序——我已经设法找出 Bitbucket 并将代码克隆到其中——我删除了为我提供的目录中的文件——但无法让它工作。

我已经完成了“syncdb”,然后当我转到我认为是应用程序的正确 URL 时,我不断收到“未处理的异常”——错误是它在导入中找不到“portfolio.settings”(投资组合是应用程序的名称)

我也不知道 MEDIA_ROOT 和 STATIC_DIRS 应该放什么——据我所知,这些应该是完整路径,而不是相对路径。

我是 Django 新手,要部署在本地运行良好的应用程序,这证明是相当困难的。提供的任何帮助(我还没有找到 Pythonanywhere 论坛 - 似乎没有被索引 - 或者帮助所有有用的东西,恐怕)

我也想:为什么不让Pythonanywhere为我建立一个空白项目,但是我又不知道如何处理STATIC_DIRS和MEDIA_ROOT,我也不知道如何让我的项目适合他们的设置。

谢谢你的帮助。

4

1 回答 1

5

对于遇到类似问题的其他人:Web 应用程序中的导入错误通常与您sys.path的配置不正确有关。检查您的 WSGI 文件(在 PythonAnywhere 上,您可以在 Web 选项卡上找到它。其他主机可能会做不同的事情)。

例子:

  • /home/myusername/myproject/是项目文件夹
  • /home/myusername/myproject/my_cool_app/是您的应用文件夹之一
  • /home/myusername/myproject/myproject/settings.py是设置文件位置

你的 WSGI 文件应该有:

sys.path.append('/home/myusername/myproject')
# ...
DJANGO_SETTINGS_MODULE = 'myproject.settings'

你的settings.py应该有

INSTALLED_APPS = (
   #...
   'my_cool_app'

一切都必须对齐,以便您的应用程序的点符号名称INSTALLED_APPS和您的DJANGO_SETTINGS_MODULE环境变量将正确导入,相对于您添加到 sys.path 的文件夹。

所以在上面的例子中,你可以想象这样做:

# wsgi file
sys.path.append('/home/myusername')
DJANGO_SETTINGS_MODULE = 'myproject.myproject.settings'
# settings.py
INSTALLED_APPS = 'myproject.my_cool_app'

但不要那样做,太复杂了。

PS 在文档中有详细的 sys.path 和 pythonanywhere 导入问题指南

于 2014-04-01T11:28:12.330 回答