Я использую 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)
Что я должен делать?
Как вы установили 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 на удивление работает! почему для этого так много дополнительных инструментов? (ˇˍˇ)
mac osx
+ Python2.7.13
openssl
.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, можешь мне сказать:
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.noarch 0.19.0-1.el7 @epel
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
должно решить проблему.
Самый полезный комментарий
Обновить. Кажется, это исправило ...
pip install requests urllib3 pyOpenSSL --force --upgrade