ModuleNotFound错误Django和Heroku部署

时间:2020-01-04 16:10:25

标签: django heroku

我对Django和整体编程尚不熟悉,我正尝试将用Django开发的个人网站部署到heroku。

我觉得自己已经走到最后一步,但是一个错误不断困扰着我,我无法自己解决或使用文档解决问题。

我的项目文件夹如下: enter image description here

我的个人档案: enter image description here

我的wsgi文件:

enter image description here

在heroku日志中,我得到以下信息:

$sql = "SELECT * FROM sheet1 WHERE id = '$_POST[text]'";

$result = mysqli_query($con,$sql);

If ($row = mysqli_fetch_array($result))

{

   for($i = 2; $i < 10; $i++){
      $c  = mysqli_fetch_field_direct($result,$i)->name;
      echo $row[$i] ; echo $c[$i];
   }

}

有很多蓝线,但是我认为这是有问题的(即无法从中找到设置文件)

如果不清楚,我还能提供什么吗?

感谢您的帮助

我欢迎任何问题

更新!

因此,我将使用的数据库从SQLite3更新为PostgreSQL,但仍然出现服务器错误500。

这是我的manage.py文件,用于放置PostgreSQL:

DATABASE in manage.py

该应用在我执行2020-01-04T15:45:47.211072+00:00 app[web.1]: ModuleNotFoundError: No module named 'blog' 时运行,但在heroku部署时却没有运行。

heroku日志如下:

heroku log

1 个答案:

答案 0 :(得分:0)

总结调查启动问题的过程。有两个问题:

1。。项目布局因本地开发和在Heroku上的生产而异,而代码库设置为除 wsgi以外的最高级别 mysite 作为homepath .py 文件导致了花费更多时间进行故障排除。

.
├── Procfile <- web: gunicorn mysite.mysite.wsgi
├── mysite
│   ├── __init__.py
│   ├── blog
│   ├── db.sqlite3
│   ├── manage.py <- python manage.py runserver
│   ├── mysite
│   ├── static
│   ├── staticfiles
│   └── templates
├── requirements.txt
└── venv

解决方案

修复 mysite 的代码库作为本地路径,并使用-chdir -pythonpath 设置运行gunicorn以具有适当的路径设置

-chdir :在应用加载之前将Chdir定位到指定目录:

web: gunicorn --chdir mysite mysite.wsgi

-pythonpath :将目录添加到Python路径

web: gunicorn --pythonpath mysite mysite.wsgi

2。迁移。没有执行任何迁移操作。

解决方案

在Procfile中添加 release 阶段,该阶段将在每次部署应用程序时应用迁移:

release: cd mysite && python manage.py migrate

在解决了这两个问题之后,该应用程序便启动并运行。