与我之前提到的许多尚未解决的问题类似,在部署我的 Django 项目以在 Heroku 上发布时,我得到了
ModuleNotFoundError
,该项目在本地运行良好。我用 Django 4.0
和 Python 3.10.13
。
Heroku 发布日志:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/base.py", line 413, in run_from_argv
self.execute(*args, **cmd_options)
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/base.py", line 454, in execute
self.check()
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/base.py", line 486, in check
all_issues = checks.run_checks(
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/checks/registry.py", line 88, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/checks/compatibility/django_4_0.py", line 9, in check_csrf_trusted_origins
for origin in settings.CSRF_TRUSTED_ORIGINS:
File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 89, in __getattr__
self._setup(name)
File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 76, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 190, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'opportunities.settings.heroku_staging'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app/manage.py", line 22, in <module>
main()
File "/app/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/base.py", line 426, in run_from_argv
connections.close_all()
File "/app/.heroku/python/lib/python3.10/site-packages/django/utils/connection.py", line 84, in close_all
for conn in self.all(initialized_only=True):
File "/app/.heroku/python/lib/python3.10/site-packages/django/utils/connection.py", line 76, in all
return [
File "/app/.heroku/python/lib/python3.10/site-packages/django/utils/connection.py", line 73, in __iter__
return iter(self.settings)
File "/app/.heroku/python/lib/python3.10/site-packages/django/utils/functional.py", line 47, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/app/.heroku/python/lib/python3.10/site-packages/django/utils/connection.py", line 45, in settings
self._settings = self.configure_settings(self._settings)
File "/app/.heroku/python/lib/python3.10/site-packages/django/db/utils.py", line 148, in configure_settings
databases = super().configure_settings(databases)
File "/app/.heroku/python/lib/python3.10/site-packages/django/utils/connection.py", line 50, in configure_settings
settings = getattr(django_settings, self.settings_name)
File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 89, in __getattr__
self._setup(name)
File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 76, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python3.10/site-packages/django/conf/__init__.py", line 190, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'opportunities.settings.heroku_staging'
在 Heroku 中,我将
DJANGO_SETTINGS_MODULE
设置为 opportunities.settings.heroku_staging
。因此,给出应该可以解决问题的项目结构,但我收到此错误。
鉴于回溯中的文件路径(例如
app
),看起来您正在将项目部署在模块中 opportunities
而不是 File "/app/manage.py", line 22, in <module>
。
您可以:
更改您的配置以部署在
opportunities
而不是 app
上。如何执行此操作取决于您如何部署它。
或将
DJANGO_SETTINGS_MODULE
设置为 app.settings.heroku_staging
。