如何将Django项目迁移到Pythonanywhere

Cer*_*ean 7 python django pythonanywhere

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

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

我也不知道要为MEDIA_ROOT和STATIC_DIRS添加什么 - 据我所知,这些应该是完整路径,而不是相对路径.

我是一个Django新手,这证明是相当压倒性的,以获得在本地运行良好的应用程序,部署.提供的任何帮助(我没有找到Pythonanywhere论坛 - 似乎没有索引 - 或者帮助所有有用的,我害怕)

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

谢谢你的帮助.

hwj*_*wjp 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'
Run Code Online (Sandbox Code Playgroud)

你的settings.py应该有

INSTALLED_APPS = (
   #...
   'my_cool_app'
Run Code Online (Sandbox Code Playgroud)

一切都必须对齐,以便您的应用程序中的点符号名称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'
Run Code Online (Sandbox Code Playgroud)

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

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