【问题标题】:When deploying Django to Heroku: ModuleNotFoundError: No module named 'env'将 Django 部署到 Heroku 时:ModuleNotFoundError: No module named 'env'
【发布时间】:2020-12-16 19:05:26
【问题描述】:

将 Django 部署到 Heroku 时,我收到 ModuleNotFoundError: No module named 'env' 错误。

有人知道它为什么要寻找那个模块吗?

这是我的 requirements.txt:

asgiref==3.2.3
certifi==2020.12.5
chardet==3.0.4
dj-database-url==0.5.0
Django==1.11
django-forms-bootstrap==3.1.0
gunicorn==20.0.4
idna==2.10
Pillow==5.3.0
psycopg2==2.8.6
pytz==2020.4
requests==2.25.0
sqlparse==0.4.1
stripe==2.55.1
urllib3==1.26.2
whitenoise==5.2.0

这是 Heroku 的构建日志:

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
           utility.execute()
         File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 307, in execute
           settings.INSTALLED_APPS
         File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
           self._setup(name)
         File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 41, in _setup
           self._wrapped = Settings(settings_module)
         File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 110, in __init__
           mod = importlib.import_module(self.SETTINGS_MODULE)
         File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
           return _bootstrap._gcd_import(name[level:], package, level)
         File "<frozen importlib._bootstrap>", line 994, in _gcd_import
         File "<frozen importlib._bootstrap>", line 971, in _find_and_load
         File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
         File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
         File "<frozen importlib._bootstrap_external>", line 678, in exec_module
         File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
         File "/tmp/build_ae2377c8_/issuetracker/settings.py", line 15, in <module>
           import env
       ModuleNotFoundError: No module named 'env'
 !     Error while running '$ python 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

【问题讨论】:

  • 你的堆栈跟踪是什么? env 某处正在做某事。
  • 在我的例子中,在 settings.py 中使用 env 来隐藏密钥。
  • 我已经更新了第一篇文章以包含来自 Heroku 的构建日志。我的 settings.py 正在导入我的 gitignore 文件中的“env”,所以没有上传到 github,那么我该如何解决这个问题?
  • 你要么重写你的代码,使它不import env,要么将env.py文件提交到你的git repo。
  • “有人知道它为什么要寻找那个模块吗?...在​​我的例子中, env 在 settings.py 中用于隐藏密钥”——那么,它正在寻找那个模块,因为 你正在使用那个模块.

标签: python django heroku


【解决方案1】:

从 settings.py 文件中删除 import env 代码并运行此代码

heroku config:set DISABLE_COLLECTSTATIC=1

【讨论】:

    【解决方案2】:

    我现在记得如何解决这个问题。我需要添加到我的设置文件中:

        if os.path.exists('env.py'):
            import env
    

    Heroku 又开始工作了。

    感谢您的回答。

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 2020-09-26
      • 1970-01-01
      • 2020-09-12
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      相关资源
      最近更新 更多