Certbot: ImportError: нет модуля с именем "requests.packages.urllib3"

Созданный на 12 сент. 2017  ·  37Комментарии  ·  Источник: certbot/certbot

Я использую nginx на centos 7.3, при запуске certbot --nginx возникает ошибка:

ImportError: No module named 'requests.packages.urllib3'

[root<strong i="9">@demo</strong> src]# certbot --nginx
Traceback (most recent call last):
  File "/usr/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.14.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 564, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2662, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2316, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2322, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 14, in <module>
    from certbot import account
  File "/usr/lib/python2.7/site-packages/certbot/account.py", line 17, in <module>
    from acme import messages
  File "/usr/lib/python2.7/site-packages/acme/messages.py", line 4, in <module>
    from acme import challenges
  File "/usr/lib/python2.7/site-packages/acme/challenges.py", line 10, in <module>
    import requests
  File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in <module>
    from . import utils
  File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in <module>
    from .exceptions import InvalidURL
  File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module>
    from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
  File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module
    raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'requests.packages.urllib3'

пакеты:

[root<strong i="13">@demo</strong> src]# pip list
acme (0.14.1)
backports.ssl-match-hostname (3.4.0.2)
certbot (0.14.1)
certifi (2017.7.27.1)
cffi (1.6.0)
chardet (3.0.4)
Cheetah (2.4.4)
cloud-init (0.7.6)
ConfigArgParse (0.11.0)
configobj (4.7.2)
cryptography (1.3.1)
decorator (3.4.0)
enum34 (1.0.4)
future (0.16.0)
idna (2.6)
iniparse (0.4)
ipaddress (1.0.16)
IPy (0.75)
Jinja2 (2.9.6)
jsonpatch (1.16)
jsonpointer (1.10)
kitchen (1.1.1)
Markdown (2.6.8)
MarkupSafe (1.0)
mock (1.0.1)
ndg-httpsclient (0.3.2)
oauth (1.0.1)
parsedatetime (1.5)
perf (0.1)
pip (9.0.1)
ply (3.4)
policycoreutils-default-encoding (0.1)
prettytable (0.7.2)
psutil (2.2.1)
pyasn1 (0.1.9)
pycparser (2.14)
pycurl (7.19.0)
pygobject (3.14.0)
pygpgme (0.3)
pyliblzma (0.5.3)
pyOpenSSL (0.13.1)
pyparsing (1.5.6)
pyRFC3339 (1.0)
python2-pythondialog (3.3.0)
pytz (2012d)
pyudev (0.15)
pyxattr (0.5.1)
PyYAML (3.12)
requests (2.18.4)
seobject (0.1)
sepolicy (1.1)
setuptools (36.2.7)
six (1.9.0)
slip (0.4.0)
slip.dbus (0.4.0)
urlgrabber (3.10)
urllib3 (1.22)
yum-axelget (1.0.4)
yum-metadata-parser (1.1.4)
zope.component (4.1.0)
zope.event (4.0.3)
zope.interface (4.0.5)

Что я должен делать?

fedora / redhat / CentOS pkging debugging

Самый полезный комментарий

Обновить. Кажется, это исправило ...

pip install requests urllib3 pyOpenSSL --force --upgrade

Все 37 Комментарий

Как вы установили certbot?
Вероятно, что pip, устанавливающий urllib3, должен исправить это, но может быть более простой способ. Например, он упакован как rpm, что, вероятно, является предпочтительным способом установки на centos: https://www.rpmfind.net/linux/rpm2html/search.php?query=python-urllib3
Но удивительно, что ничто не установило это как зависимость. Вы установили certbot из диспетчера пакетов? Вы следовали этим инструкциям? https://certbot.eff.org/#centosrhel7 -nginx

@SwartzCr Да, я сделал это после https://certbot.eff.org/#centosrhel7 -nginx

Можете попробовать обновить свои версии запросов и шесть, как указано в # 4886 - думаю, это та же проблема. @erikrose - это ситуация, когда нам нужно отправить что-то вверх по течению в CentOS или RHEL?

Кажется, у него уже есть последняя версия запросов, а там шесть, так что ситуация другая, чем # 4884.

В CentOS 7 единственный способ получить urllib3 (1.22) - использовать pip install. Версия yum с epel очень старая: python-urllib3.noarch 0: 1.10.2-3.el7 и вызывает ошибку неправильной версии. Но после установки certbot-apache с urllib3 v.1.22 вы получите следующее при запуске certbot --apache :
ImportError: No module named 'requests.packages.urllib3'
Я думаю, что у меня есть все последние пакеты:
certbot (0.18.1) certbot-apache (0.18.1) certifi (2017.7.27.1) pycurl (7.19.0) requests (2.18.4) six (1.11.0) urlgrabber (3.10) urllib3 (1.22)

Обновить. Кажется, это исправило ...

pip install requests urllib3 pyOpenSSL --force --upgrade

Но тогда вы получите это при запуске certbot --apache :
AttributeError: 'module' object has no attribute 'rand'

Увидев ту же проблему на новой установке centos 7.3. Также попытался установить python2-certbot , получив ту же ошибку, что и @wardmundy . Пытался запустить certbot-2 --standalone .

Я попытался установить более старую версию 0.14.0, получил ту же ошибку. Я пошел по ручному маршруту, который сработал, я успешно получил свой сертификат.

@wardmundy и @akosveres проблема с rand была исправлена ​​в https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861
и скоро будет выпущен с исправлением ошибок с номером версии 0.18.2
Это было вызвано тем, что openssl досрочно отказался от поддержки rand, как описано здесь: https://github.com/certbot/certbot/pull/5112#issuecomment -331046450
Люди все еще испытывают проблемы с urllib3?

Я пытался сегодня установить certbot на Centos 7. Я следую этому https://certbot.eff.org/#centosrhel7 - еще шаг за шагом.
когда я пытаюсь запустить sudo certbot certonly он сказал мне, что urllib3 не найден

после того, как я запустил pip install requests urllib3 pyOpenSSL --upgrade
сообщение об ошибке изменится на
ImportError: в модуле pyOpenSSL отсутствуют необходимые функции. Попробуйте перейти на версию 0.14 или новее.

У меня такая же ошибка, как у @DeronLee .
Что-то новое?

@jcguevara наконец-то я нашел лучший способ - использовать докер

По крайней мере, в некоторых из этих случаев я с подозрением отношусь к поврежденным средам Python, в которых были установлены пакеты pip , переопределяющие версии пакетов, предоставленные вашей операционной системой. Мы настоятельно не рекомендуем этого делать.

Если вы уже оказались в этом положении, я рекомендую вам использовать certbot-auto, который минимально зависит от пакетов Python, имеющихся в вашей системе.

@DeronLee спасибо за совет.

Я просто решил это, загрузив его прямо с GitHub и запустив certbot-auto, как рекомендовано @bmw .

@jcguevara Спасибо. Я попробую позже.

cerbot-auto на удивление работает! почему для этого так много дополнительных инструментов? (ˇˍˇ)

причина:

  • env: mac osx + Python2.7.13
  • вы, ребята, должны проверить версию openssl .
  • версия openssl для mac osx по умолчанию - 0.9.8zh 14 Jan 2016 .
  • когда вы используете brew install openssl , текущая версия - stable 1.0.2l .
  • но если вы используете brew install [email protected] , эта версия вызовет проблему No Module Found Urllib3 .

Как исправить:


brew uninstall [email protected]

# openssl: stable 1.0.2l
brew install openssl

  • тогда вы обнаружите, что проблема Urllib3 исправлена.

После запуска этой команды
pip install requests urllib3 pyOpenSSL --force --upgrade

Как сказал @DeronLee :

сообщение об ошибке изменится на
ImportError: в модуле pyOpenSSL отсутствуют необходимые функции. Попробуйте перейти на версию 0.14 или новее.

Я устанавливаю pyOpenSSL версии 16.2.0, и у меня это сработало.
pip install pyOpenSSL==16.2.0

Благодарю. Я пытаюсь установить самую последнюю версию, но не работает. Может быть я
стоит попробовать специальную версию

11 ноября 2017 г., 1:04, "Нгуен Тхань Тиен" [email protected]
написал:

После запуска этой команды
запросы на установку pip urllib3 pyOpenSSL --force --upgrade

Как сказал @DeronLee https://github.com/deronlee :

сообщение об ошибке изменится на
ImportError: в модуле pyOpenSSL отсутствуют необходимые функции. Пытаться
обновление до версии 0.14 или новее.

Я устанавливаю pyOpenSSL версии 16.2.0, и у меня это сработало.
pip install pyOpenSSL == 16.2.0

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
.

@ thanhtien522
Благодарю. Я пытаюсь установить самую последнюю версию, но не работает. Может стоит попробовать специальную версию

@DeronLee, можешь мне сказать:

  • Какую версию вашей ОС вы используете?
  • Какую версию Certbot вы установили?
  • Как вы установили Certbot
  • Результат pip freeze ?

@SwartzCr У меня такая же проблема с @DeronLee
Итак, я запускаю команду
pip install requests urllib3 pyOpenSSL --force --upgrade
и я получил такую ​​ошибку:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
Затем я попробовал то, что упоминал @ thanhtien522.
pip install pyOpenSSL==16.2.0
Но это все еще не работает для меня, у меня все еще та же ошибка, которая говорит мне, что pyOpenSSL отсутствует.

  • ОС: PRETTY_NAME="CentOS Linux 7 (Core)"
  • Версия Certbot: certbot.noarch 0.19.0-1.el7 @epel
  • Установлен Certbot, запустив yum install certbot-nginx
  • И результат pip freeze показан ниже.
acme==0.19.0
asn1crypto==0.23.0
backports.ssl-match-hostname==3.4.0.2
certbot==0.19.0
certbot-nginx==0.19.0
certifi==2017.11.5
cffi==1.11.2
chardet==3.0.4
Cheetah==2.4.4
cloud-init==0.7.6
ConfigArgParse==0.11.0
configobj==4.7.2
cryptography==2.1.4
decorator==3.4.0
enum34==1.1.6
future==0.16.0
idna==2.6
iniparse==0.4
ipaddress==1.0.18
IPy==0.75
Jinja2==2.9.6
jsonpatch==1.16
jsonpointer==1.12
kitchen==1.1.1
Markdown==2.6.9
MarkupSafe==1.0
mock==1.0.1
ndg-httpsclient==0.3.2
oauth==1.0.1
parsedatetime==1.5
perf==0.1
ply==3.4
policycoreutils-default-encoding==0.1
prettytable==0.7.2
psutil==2.2.1
pyasn1==0.1.9
pycparser==2.18
pycurl==7.19.0
pygobject==3.22.0
pygpgme==0.3
pyliblzma==0.5.3
pyOpenSSL==16.2.0
pyparsing==1.5.6
pyRFC3339==1.0
python-linux-procfs==0.4.9
python2-pythondialog==3.3.0
pytz==2016.10
pyudev==0.15
pyxattr==0.5.1
PyYAML==3.12
requests==2.18.4
schedutils==0.4
seobject==0.1
sepolicy==1.1
six==1.11.0
slip==0.4.0
slip.dbus==0.4.0
urlgrabber==3.10
urllib3==1.22
yum-metadata-parser==1.1.4
zope.component==4.1.0
zope.event==4.0.3
zope.interface==4.0.5

Похоже, что в первую очередь нам нужно поднять версию pyOpenSSL, от которой мы зависим для certbot в centos, вот что я получаю при новой установке:

Dependencies Resolved

==================================================================================================
 Package                        Arch           Version                      Repository       Size
==================================================================================================
Installing:
 python2-certbot-nginx          noarch         0.19.0-1.el7                 epel             53 k
Installing for dependencies:
 certbot                        noarch         0.19.0-1.el7                 epel             20 k
 dialog                         x86_64         1.2-4.20130523.el7           base            208 k
 pyOpenSSL                      x86_64         0.13.1-3.el7                 base            133 k
 pyparsing                      noarch         1.5.6-9.el7                  base             94 k
 python-cffi                    x86_64         1.6.0-5.el7                  base            218 k
 python-enum34                  noarch         1.0.4-1.el7                  base             52 k
 python-idna                    noarch         2.4-1.el7                    base             94 k
 python-ipaddress               noarch         1.0.16-2.el7                 base             34 k
 python-ndg_httpsclient         noarch         0.3.2-1.el7                  epel             43 k
 python-parsedatetime           noarch         1.5-3.el7                    epel             61 k
 python-ply                     noarch         3.4-11.el7                   base            123 k
 python-pycparser               noarch         2.14-1.el7                   base            104 k
 python-zope-component          noarch         1:4.1.0-3.el7                epel            227 k
 python-zope-event              noarch         4.0.3-2.el7                  epel             79 k
 python-zope-interface          x86_64         4.0.5-4.el7                  base            138 k
 python2-acme                   noarch         0.19.0-1.el7                 epel            176 k
 python2-certbot                noarch         0.19.0-1.el7                 epel            471 k
 python2-configargparse         noarch         0.11.0-1.el7                 epel             30 k
 python2-cryptography           x86_64         1.7.2-1.el7_4.1              updates         502 k
 python2-dialog                 noarch         3.3.0-6.el7                  epel             94 k
 python2-future                 noarch         0.16.0-2.el7                 epel            799 k
 python2-mock                   noarch         1.0.1-9.el7                  epel             92 k
 python2-psutil                 x86_64         2.2.1-3.el7                  epel            116 k
 python2-pyasn1                 noarch         0.1.9-7.el7                  base            100 k
 python2-pyrfc3339              noarch         1.0-2.el7                    epel             13 k
 pytz                           noarch         2016.10-2.el7                base             46 k

Где, вероятно, должна быть версия более 0,14
Это может означать, что кому-то нужно упаковать его для centos - @bmw - это @hogarthj, с кем мне следует связаться по этому поводу?

Да, hogarthj является нашим контактным лицом по упаковке Red Hat / Fedora, но он более отзывчив по электронной почте. Я рад вас когда-нибудь представить, но не думаю, что с его стороны здесь нужны какие-то изменения.

CentOS 7 - одна из наших самых популярных платформ, и мы регулярно тестируем CentOS 7 без проблем. Большинство людей в этой ветке сообщают о наличии запросов 2.18.x. Запросы 2.6.0 включены в репозитории CentOS 7. Если вы смешиваете пакеты Python из своей ОС и pip , у вас будут плохие времена.

Люди на CentOS 7, у которых возникла эта проблема, могут обойти проблему, отменив изменения в своих пакетах Python, сделанные с помощью pip или с помощью certbot-auto, который позволяет обойти проблему, не полагаясь на пакеты Python, установленные в вашей системе. .

Я выполнил эти инструкции (моя версия urllib3 также не работала), после чего можно было запустить certbot ... Надеюсь, это поможет.

Я уверен, что их можно свернуть на меньшее количество команд ...

запросы на удаление пакетов
pip удалить urllib3
ням удалить python-urllib3
ням удалить python-запросы
yum установить python-urllib3
yum установить python-запросы
ням установить certbot

Я попробовал, использую эти команды, и это работает!

pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
yum install python-urllib3
yum install python-requests
yum install certbot
yum install docker-compose

мы можем использовать pip в будущем после использования yum?

@sreezree, вы не должны использовать pip для установки пакетов, связанных с certbot, поскольку они будут конфликтовать с теми, которые устанавливает certbot

Ни один из упомянутых выше методов у меня не работает, сообщение об ошибке остается прежним. ImportError: No module named 'requests.packages.urllib3'

Я сталкиваюсь с той же ошибкой в ​​CentOS 7.4:
ImportError: нет модуля с именем "requests.packages.urllib3"
и попробовал предложенное решение smalenfant. Красиво работает.

У меня такая же ошибка.

Я обнаружил, что при установке certbot возникает ошибка

  Installing : pytz-2016.10-2.el7.noarch                                                                                                                  12/55
  Installing : python2-parsedatetime-2.4-5.el7.noarch                                                                                                     13/55
  Installing : python-urllib3-1.10.2-5.el7.noarch                                                                                                         14/55
Error unpacking rpm package python-urllib3-1.10.2-5.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
  Installing : libsemanage-python-2.5-11.el7.x86_64                                                                                                       15/55
error: python-urllib3-1.10.2-5.el7.noarch: install failed
  Installing : python-ndg_httpsclient-0.3.2-1.el7.noarch                                                                                                  16/55
  Installing : python2-six-1.9.0-0.el7.noarch                                                                                                             17/55

error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename

error: python-urllib3-1.10.2-5.el7.noarch: install failed

и я пытаюсь переустановить его, затем появляется такая же ошибка

# yum install python-urllib3
Error unpacking rpm package python-urllib3-1.10.2-5.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
  Verifying  : python-urllib3-1.10.2-5.el7.noarch                                                                                                           1/1

Failed:
  python-urllib3.noarch 0:1.10.2-5.el7

Complete!

это не удалось, но финальное шоу Complete! , как это Complete! ?

Итак, я обнаружил, что друзья Тяньчао сказали, что это конфликт с версией pip

https://blog.csdn.net/u013614281/article/details/76832818

и я удаляю версию pip и устанавливаю версию yum

pip uninstall urllib3
yum install python-urllib3

после этого я получил еще одну ошибку

pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests

так что, черт возьми, я плачу

после этого попробовал

pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot

и это работает .....

поэтому я думаю, что версия запросов не соответствует urllib3

поэтому он попробовал в пыльнике той же машины env

сначала удалите запросы и urllib3

pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests

установить certbot

это нормально

Эта ошибка фактически выводится из-за неудачной попытки try..catch во внутреннем коде запросов python:

try: 
   import urllib3
except: 
   import requests.packages.urllib3

Эта проблема возникает, когда urllib3 не может быть найден, но также когда urllib3 не может быть загружен по какой-либо причине.

Вы можете удалить старый cerbot, а затем попытаться установить его через pip. который должен работать.

sudo pip install certbot

Я попробовал, использую эти команды, и это работает!

pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
yum install python-urllib3
yum install python-requests
yum install certbot
yum install docker-compose

Отлично, проблема решена!

Рекомендуется установка с

Чтобы уточнить, рекомендуемый метод установки в системах на основе RHEL 7 - использовать EPEL .

Проблемы в этом потоке обычно вызваны нарушением установки Python из-за пакетов, установленных из pip конфликтующих с пакетами, установленными из yum . Удаление пакетов, установленных вами с помощью pip должно решить проблему.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги