【发布时间】: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 中用于隐藏密钥”——那么,它正在寻找那个模块,因为 你正在使用那个模块.