已安装django-heroku和psycopg2,但显示“ import django_heroku ModuleNotFoundError:没有名为'django_heroku'的模块”

时间:2020-06-04 11:00:58

标签: django heroku

首先我安装了psycopg2,然后安装了django_heroku。

setting.py

import django_heroku
import os
---
---
django_heroku.settings(locals())

这是我在虚拟环境中安装的要求。

requirements.txt

asgiref==3.2.7
certifi==2020.4.5.1
chardet==3.0.4
dj-database-url==0.5.0
Django==3.0.5
django-contrib-comments==1.9.2
django-heroku==0.3.1
gunicorn==20.0.4
idna==2.9
psycopg2==2.7.5
pytz==2020.1
requests==2.23.0
six==1.15.0
sqlparse==0.3.1
urllib3==1.25.9
whitenoise==5.1.0

推入heroku master之后,它会显示。

活动日志

      File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
         File "<frozen importlib._bootstrap>", line 983, in _find_and_load
         File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
         File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
         File "<frozen importlib._bootstrap_external>", line 728, in exec_module
         File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
         File "/tmp/build_e4e9cada1e303d2ab0fdd618bffc8af4/covid19/covid19/settings.py", line 13, in <module>
           import django_heroku
       ModuleNotFoundError: No module named 'django_heroku'
 !     Error while running '$ python covid19/manage.py collectstatic --noinput'.
       See traceback above for details.
       You may need to update application code to resolve this error.
       Or, you can disable collectstatic for this application:
          $ heroku config:set DISABLE_COLLECTSTATIC=1
       https://devcenter.heroku.com/articles/django-assets
 !     Push rejected, failed to compile Python app.
 !     Push failed

其他问题到此为止,即“ ModuleNotFoundError:没有名为'covid19.wsgi'的模块”。 但是我在Procfile中使用了它。

Procfile

web: gunicorn covid19.wsgi 

2 个答案:

答案 0 :(得分:0)

在了解根目录之后,我已经解决了这个问题。 我的项目不在根目录中。

当我通过命令创建项目时

django-admin startproject projectname

它将创建两个文件夹projectname-> projectname

但是,如果我们这样命令。

django-admin startproject projectname .

它仅在manage.py所在的位置创建一个文件夹文件夹项目名称。

它是根目录。因此,我复制了所有应用程序以及其他文件和文件夹,然后粘贴到了根文件夹中,然后就可以了。

答案 1 :(得分:0)

尝试将您的 procfile 更改为: web: gunicorn --chdir covid19 covid19.wsgi

如果您的根目录与您提供的直接路径不匹配,--chdir 将告诉它根据列出的目录进行匹配。因此,基本上如果您的 wsgi.py 在您的根目录中,您的原始 procfile 将起作用,但是如果您的根目录在父文件夹中,它将无法识别您的 wsgi,因为它位于与根目录不同的位置(最常见的似乎是根目录的级别高于预期,建议的 procfile 将解决)