Heroku 上的 Django:KeyError: 'collectstatic'

问题描述

我正在尝试在 Heroku 上部署我的简单 Django Web 应用程序,但构建失败并出现以下错误

       Successfully installed asgiref-3.3.4 dj-database-url-0.5.0 django-3.2 django-heroku-0.3.1 gunicorn-20.1.0 numpy-1.20.2 pillow-8.2.0 psycopg2-2.8.6 pytz-2021.1 sqlparse-0.4.1 torch-1.8.1 torchvision-0.9.1 typing-extensions-3.7.4.3 whitenoise-5.2.0

-----> $ python pytorch_django/manage.py collectstatic --noinput

       Traceback (most recent call last):

         File "/app/.heroku/python/lib/python3.9/site-packages/django/core/management/__init__.py",line 237,in fetch_command

           app_name = commands[subcommand]

       KeyError: 'collectstatic'

       During handling of the above exception,another exception occurred:

       Traceback (most recent call last):

         File "/tmp/build_6b3954ac/pytorch_django/manage.py",line 22,in <module>

           main()

         File "/tmp/build_6b3954ac/pytorch_django/manage.py",line 18,in main

           execute_from_command_line(sys.argv)

         File "/app/.heroku/python/lib/python3.9/site-packages/django/core/management/__init__.py",line 419,in execute_from_command_line

           utility.execute()

         File "/app/.heroku/python/lib/python3.9/site-packages/django/core/management/__init__.py",line 413,in execute

           self.fetch_command(subcommand).run_from_argv(self.argv)

         File "/app/.heroku/python/lib/python3.9/site-packages/django/core/management/__init__.py",line 244,in fetch_command

           settings.INSTALLED_APPS

         File "/app/.heroku/python/lib/python3.9/site-packages/django/conf/__init__.py",line 82,in __getattr__

           self._setup(name)

         File "/app/.heroku/python/lib/python3.9/site-packages/django/conf/__init__.py",line 69,in _setup

           self._wrapped = Settings(settings_module)

         File "/app/.heroku/python/lib/python3.9/site-packages/django/conf/__init__.py",line 170,in __init__

           mod = importlib.import_module(self.SETTINGS_MODULE)

         File "/app/.heroku/python/lib/python3.9/importlib/__init__.py",line 127,in import_module

           return _bootstrap._gcd_import(name[level:],package,level)

         File "<frozen importlib._bootstrap>",line 1030,in _gcd_import

         File "<frozen importlib._bootstrap>",line 1007,in _find_and_load

         File "<frozen importlib._bootstrap>",line 972,in _find_and_load_unlocked

         File "<frozen importlib._bootstrap>",line 228,in _call_with_frames_removed

         File "<frozen importlib._bootstrap>",line 984,in _find_and_load_unlocked

       ModuleNotFoundError: No module named 'project'

 !     Error while running '$ python pytorch_django/manage.py collectstatic --noinput'.

我已经在 Heroku 上成功部署了其他 Django 应用程序,但我不明白这里出了什么问题。 KeyError: 'collectstatic' 是什么意思或它来自哪里?

在本地,应用运行良好,python manage.py collectstatic 也运行良好。有什么问题?它可能与Python 3.9有关吗?我在本地安装了 Python 3.8。

编辑:这也发生在新创建的 Django 应用中 - 代码没有任何变化。

解决方法

问题是我自己的错,但不是在 Django 应用程序中,而是在我的 Heroku 配置中。 在我的 Heroku 环境变量 (Settings > Config Vars) 中,我错误地将 DJANGO_SETTINGS_MODULE 设置为 project.prod_settings。 但是,我的 Django 项目名为 pytorch_django,因此我必须将其设置为 pytorch_django.prod_settings

这就是导致错误 ModuleNotFoundError: No module named 'project' 的原因。 将 DJANGO_SETTINGS_MODULE 更改为正确的路径解决了问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...