ImportError:在 Heroku 上部署时没有名为“decouple”的模块

新手上路,请多包涵

我试图从 heroku cli 将我的 django 项目部署到 heroku 上。所以我创建了一个应用程序,然后从项目目录中运行 git push heroku master 。然后我得到了错误:

 remote: -----> $ python manage.py collectstatic --noinput
remote:      Traceback (most recent call last):
remote:          File "manage.py", line 15, in <module>
remote:            execute_from_command_line(sys.argv)
remote:          File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
remote:            utility.execute()
remote:          File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/__init__.py", line 317, in execute
remote:            settings.INSTALLED_APPS
remote:          File "/app/.heroku/python/lib/python3.5/site-packages/django/conf/__init__.py", line 56, in __getattr__
remote:            self._setup(name)
remote:   File "/app/.heroku/python/lib/python3.5/site-packages/django/conf/__init__.py", line 43, in _setup remote:            self._wrapped = Settings(settings_module)
remote:          File "/app/.heroku/python/lib/python3.5/site-packages/django/conf/__init__.py", line 106, in __init__
remote:            mod = importlib.import_module(self.SETTINGS_MODULE)
remote:          File "/app/.heroku/python/lib/python3.5/importlib/__init__.py", line 126, in import_module
remote:            return _bootstrap._gcd_import(name[level:], package, level)
remote:          File "<frozen importlib._bootstrap>", line 986, in _gcd_import
remote: File "<frozen importlib._bootstrap>", line 969, in _find_and_load
remote:          File "<frozen importlib._bootstrap>", line 958, in
_find_and_load_unlocked
remote:          File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
remote:          File "<frozen importlib._bootstrap_external>", line 665, in exec_module
remote:          File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
remote:          File "/tmp/build_93c58c906371cd0110470b6bb3ccecc1/funderpreneur/settings.py", line 15, in <module>
remote:            from decouple import Csv, config
remote:        ImportError: No module named 'decouple'
remote:
remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
remote:        See traceback above for details.
remote:
remote:        You may need to update application code to resolve this error.
remote:        Or, you can disable collectstatic for this application: remote:
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote:
remote:        https://devcenter.heroku.com/articles/django-assets
remote:  !     Push rejected, failed to compile Python app.
remote:
remote:  !     Push failed

因此,正如所提到的,我跑了 heroku config:set DISABLE_COLLECTSTATIC=1 。然后代码被推送到存储库中。然后我跑了 heroku run python3 manage.py migrate 。但我仍然得到同样的错误说:

文件“/app/funderpreneur/settings.py”,第 15 行,位于

来自 decouple import Csv,config ImportError: No module named ‘decouple’

但是我在本地为 python 2 和 3 安装了 python-decouple 。而且整个项目都在 django 版本 2 和 python 版本 3.5.2 上运行。但是在 runtime.txt 我已经设置了 python-3.6.4 。我有 requirements.txt 其中 decouple 已经存在。

在我的 settings.py 我有

import django_heroku
django_heroku.settings(locals())

但是我遇到了错误,所以我对它们进行了评论。仍然出错。

哪里错了或者我做错了什么?

编辑

我的 requirements.txt

 dj-database-url
django
gunicorn
psycopg2
whitenoise
dj-static
Unipath
python-decouple
Pillow
Markdown
bleach
python-decouple
django-material
raven
django-debug-toolbar
django-tables2
django-phonenumber-field
django-guardian
django-notifications-hq
djangorestframework
matplotlib
numpy
seaborn
pandas
django-heroku

结构是:

 .
├── core
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       └── __init__.cpython-35.pyc
│   ├── models.py
│   ├── __pycache__
│   │   ├── admin.cpython-35.pyc
│   │   ├── __init__.cpython-35.pyc
│   │   ├── models.cpython-35.pyc
│   │   └── views.cpython-35.pyc
│   ├── templates
│   │   └── core
│   │       ├── base.html
│   │       ├── footer.html
│   │       ├── index.html
│   │       ├── login.html
│   │       ├── navbar.html
│   │       ├── nav.html
│   │       ├── partial_settings_menu.html
│   │       ├── password.html
│   │       ├── picture.html
│   │       ├── profile.html
│   │       └── registration.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── funderpreneur
│   ├── fonts
│   │   ├── material-design-icons
│   │   │   ├── Material-Design-Iconsd41d.eot
│   │   │   ├── Material-Design-Icons.svg
│   │   │   ├── Material-Design-Icons.ttf
│   │   │   └── Material-Design-Icons.woff
│   │   └── roboto
│   │       ├── Roboto-Bold.ttf
│   │       ├── Roboto-Bold.woff
│   │       ├── Roboto-Light.ttf
│   │       ├── Roboto-Light.woff
│   │       ├── Roboto-Medium.ttf
│   │       ├── Roboto-Medium.woff
│   │       ├── Roboto-Regular.ttf
│   │       ├── Roboto-Regular.woff
│   │       ├── Roboto-Thin.ttf
│   │       └── Roboto-Thin.woff
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-35.pyc
│   │   ├── settings.cpython-35.pyc
│   │   ├── urls.cpython-35.pyc
│   │   └── wsgi.cpython-35.pyc
│   ├── settings.py
│   ├── static
│   │   ├── css
│   │   │   ├── account-settings.css
│   │   │   ├── bootstrap.min.css
│   │   │   ├── custom-materialize.css
│   │   │   ├── footer.css
│   │   │   ├── high-rise-building.jpg
│   │   │   ├── materialize.css
│   │   │   ├── navbar.css
│   │   │   ├── navbar-top-fixed.css
│   │   │   ├── style2.css
│   │   │   └── style.css
│   │   ├── humans.txt
│   │   ├── img
│   │   │   └── buet_logo.png
│   │   └── js
│   │       ├── bootstrap.min.js
│   │       ├── circular-progress-jquery.js
│   │       ├── jquery-1.11.2.min.js
│   │       ├── jquery-slim.min.js
│   │       ├── jquery.waypoints.min.js
│   │       ├── materialize.js
│   │       ├── popper.min.js
│   │       ├── profile-validation.js
│   │       └── registration-validation.js
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── media
├── Pipfile
├── Procfile
├── README.md
├── requirements.txt
├── runtime.txt
└── staticfiles

原文由 sphoenix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我认为您还没有将包名称从 requirements.txt 写入 Pipfile 下面的 [packages] 部分。您应该以这种格式添加包 -

 package_name = "version"

原文由 Ajoy D 发布,翻译遵循 CC BY-SA 3.0 许可协议

我也有这个问题,但是通过添加

python-decouple==3.1

进入 requirements.txt 文件,我能够通过它!

原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进