我正在尝试在Pythonanywhere上设置一个Django应用程序 - 我已经设法找出Bitbucket并克隆代码 - 我删除了为我提供的目录中的文件 - 但无法让它工作
我已经完成'syncdb',然后当我转到我认为应用程序的正确URL时,我不断收到“未处理的异常” - 错误是它无法找到'portfolio.settings'导入(组合是应用程序的名称)
我也不知道要为MEDIA_ROOT和STATIC_DIRS添加什么 - 据我所知,这些应该是完整路径,而不是相对路径。
我是一个Django新手,这证明是相当压倒性的,以获得部署在本地运行良好的应用程序。提供的任何帮助(我没有找到Pythonanywhere论坛 - 似乎没有索引 - 或帮助所有有用的,我害怕)
我也想过:为什么我不让Pythonanywhere为我设置一个空白项目,但同样,我不知道如何处理STATIC_DIRS和MEDIA_ROOT,我真的不知道如何使我的项目适合他们的设置。
感谢您的帮助。
答案 0 :(得分:4)
对于遇到类似问题的其他任何人: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'
所有内容都必须排成一行,以便相对于您添加到sys.path的文件夹,INSTALLED_APPS
和DJANGO_SETTINGS_MODULE
环境变量中应用的点符号名称将正确导入。
所以在上面的例子中,你可以想象:
# wsgi file
sys.path.append('/home/myusername')
DJANGO_SETTINGS_MODULE = 'myproject.myproject.settings'
# settings.py
INSTALLED_APPS = 'myproject.my_cool_app'
但是不要这样做,它太复杂了。
PS文档中有detailed guide to sys.path and import issues for pythonanywhere。