问题描述
我正在尝试在 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
更改为正确的路径解决了问题。