【问题标题】:Heroku ---> Installing pip remote: AttributeError: module 'pip._vendor.requests' has no attribute 'Session'Heroku ---> 安装 pip 远程:AttributeError:模块 'pip._vendor.requests' 没有属性 'Session'
【发布时间】:2018-09-24 18:35:00
【问题描述】:

一个 Python 3.6 Django ==11 应用程序正在部署中,并且代码定期推送到昨天。现在我有错误:

远程:AttributeError:模块“pip._vendor.requests”没有属性“会话”

整个跟踪:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 273 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing pip
remote: Traceback (most recent call last):
remote:   File "/app/tmp/buildpacks/779a8bbfbbe7e1b715476c0b23fc63a2103b3e4131eda558669aba8fb5e6e05682419376144189b29beb5dee6d7626b4d3385edb0954bffea6c67d8cf622fd51/vendor/pip-pop/pip-diff", line 15, in <module>
remote:     from pip.req import parse_requirements
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/req/__init__.py", line 3, in <module>
remote:     from .req_install import InstallRequirement
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/req/req_install.py", line 25, in <module>
remote:     import pip.wheel
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/wheel.py", line 28, in <module>
remote:     from pip.download import path_to_url, unpack_url
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/download.py", line 40, in <module>
remote:     from pip._vendor import requests, six
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py", line 83, in <module>
remote:     from pip._internal.compat import WINDOWS
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/_internal/__init__.py", line 42, in <module>
remote:     from pip._internal import cmdoptions
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/_internal/cmdoptions.py", line 16, in <module>
remote:     from pip._internal.index import (
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/_internal/index.py", line 25, in <module>
remote:     from pip._internal.download import HAS_TLS, is_url, path_to_url, url_to_path
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/pip/_internal/download.py", line 326, in <module>
remote:     class PipSession(requests.Session):
remote: AttributeError: module 'pip._vendor.requests' has no attribute 'Session'
remote: mount: failure.bad-requirements: No such file or directory
remote: -----> Installing requirements with pip
remote: 
remote: -----> $ python manage.py collectstatic --noinput
remote:        Traceback (most recent call last):
remote:          File "manage.py", line 22, in <module>
remote:            execute_from_command_line(sys.argv)
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
remote:            utility.execute()
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
remote:            django.setup()
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
remote:            apps.populate(settings.INSTALLED_APPS)
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/apps/registry.py", line 108, in populate
remote:            app_config.import_models()
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/apps/config.py", line 202, in import_models
remote:            self.models_module = import_module(models_module_name)
remote:          File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
remote:            return _bootstrap._gcd_import(name[level:], package, level)
remote:          File "<frozen importlib._bootstrap>", line 994, in _gcd_import
remote:          File "<frozen importlib._bootstrap>", line 971, in _find_and_load
remote:          File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
remote:          File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
remote:          File "<frozen importlib._bootstrap_external>", line 678, in exec_module
remote:          File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
remote:          File "/tmp/build_989d7449dd0cd18694a87448cb09f19f/indexapp/models.py", line 9, in <module>
remote:            from .image_processing import *
remote:          File "/tmp/build_989d7449dd0cd18694a87448cb09f19f/indexapp/image_processing.py", line 7, in <module>
remote:            import cv2
remote:        ModuleNotFoundError: No module named 'cv2'
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
remote: Verifying deploy...
remote: 
remote: !   Push rejected to django-rest-api-comp-vision.
remote: 
To https://git.heroku.com/django-rest-api-comp-vision.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/django-rest-api-comp-vision.git'

另一个问题 - 如上所示,我知道 OpenCv [cv2] 不存在于默认构建 DIR 中。我正在为此部署 Python OpenCV buildpack - 但需要先解决此问题:

File "/tmp/build_989d7449dd0cd18694a87448cb09f19f/indexapp/image_processing.py", line 7, in <module>
remote:            import cv2
remote:        ModuleNotFoundError: No module named 'cv2'

【问题讨论】:

  • 您最近是否更改或添加了依赖项?
  • 我在使用pip-syncpip==10.0.0 时遇到同样的错误。适用于pip==9.0.3

标签: python django heroku


【解决方案1】:

我刚刚遇到了同样的错误:

AttributeError: module 'pip._vendor.requests' has no attribute 'Session'

清除 Heroku 构建缓存为我解决了这个问题。这是您需要做的:

  1. 安装官方heroku-repo plugin for the Heroku CLI

    $ heroku plugins:install heroku-repo
    
  2. 清除应用的构建缓存:

    $ heroku repo:purge_cache -a APPNAME
    
  3. 触发部署以重建您的应用

清除构建缓存会导致 pip 在下一次构建时从头开始重新安装 Python 依赖项,而不是尝试升级当前的依赖项集。

这为我解决了AttributeError,希望对您有所帮助!

【讨论】:

  • 感谢清除“缓存”工作 - 谢谢。已投票并接受答案。
【解决方案2】:

为了摆脱这种情况,我将from pip._vendor import requests 更改为import requests

我在这里找到了解决方案:GitHub: AttributeError: module 'pip._vendor.requests' has no attribute 'Session' #5267

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2016-03-03
    • 2018-03-14
    • 2022-07-30
    • 2017-09-09
    • 2018-10-19
    相关资源
    最近更新 更多