Ich verwende Nginx unter Centos 7.3. Beim Ausführen von certbot --nginx
ist ein Fehler aufgetreten:
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'
Pakete:
[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)
Was soll ich machen?
Wie haben Sie certbot installiert?
Es ist wahrscheinlich, dass die Pip-Installation von urllib3 das Problem beheben sollte - aber es gibt möglicherweise einen einfacheren Weg. Zum Beispiel ist es als U / min verpackt, was wahrscheinlich die bevorzugte Methode ist, um es auf Centos zu installieren: https://www.rpmfind.net/linux/rpm2html/search.php?query=python-urllib3
Es ist jedoch überraschend, dass dies nicht als Abhängigkeit installiert wurde. Haben Sie certbot von Ihrem Paketmanager installiert? Haben Sie diese Anweisungen befolgt? https://certbot.eff.org/#centosrhel7 -nginx
@SwartzCr Ja, ich habe es nach https://certbot.eff.org/#centosrhel7 -nginx gemacht
Können Sie versuchen, Ihre Versionen von Anfragen und sechs zu aktualisieren, wie in # 4886 erwähnt? Ich denke, es ist das gleiche Problem. @erikrose Ist dies eine Situation, in der wir CentOS oder RHEL etwas Upstreames vorlegen müssen?
Er scheint bereits die neueste Version von Anfragen zu haben, und sechs sind da, also ist es eine andere Situation als # 4884.
Unter CentOS 7 ist die einzige Möglichkeit, urllib3 (1.22) zu erhalten, die Installation von pip. Die yum-Version mit epel ist sehr alt: python-urllib3.noarch 0: 1.10.2-3.el7 und löst einen falschen Versionsfehler aus. Nach der Installation von certbot-apache mit urllib3 v.1.22 erhalten Sie dies jedoch, wenn Sie certbot --apache ausführen :
ImportError: No module named 'requests.packages.urllib3'
Ich glaube, ich habe die neuesten Pakete:
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)
Aktualisieren. Dies scheint es behoben zu haben ...
pip install requests urllib3 pyOpenSSL --force --upgrade
Aber dann bekommen Sie dies, wenn Sie certbot --apache ausführen :
AttributeError: 'module' object has no attribute 'rand'
Das gleiche Problem bei einer brandneuen Installation von Centos 7.3. Es wurde auch versucht, python2-certbot
installieren, wobei der gleiche Fehler wie bei @wardmundy angezeigt wurde . Ich habe versucht, certbot-2 --standalone
auszuführen.
Ich habe versucht, eine ältere Version, 0.14.0, zu installieren, habe den gleichen Fehler erhalten. Ich bin den manuellen Weg gegangen, das hat funktioniert, ich habe mein Zertifikat erfolgreich erhalten.
@wardmundy und @akosveres Das Rand-Problem wurde in https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861 behoben
und wird in Kürze in einer Bugfix-Version mit der Versionsnummer 0.18.2 veröffentlicht
Dies wurde dadurch verursacht, dass openssl die Unterstützung von rand vorzeitig ablehnte, wie hier beschrieben: https://github.com/certbot/certbot/pull/5112#issuecomment -331046450
Haben die Leute immer noch Probleme mit urllib3?
Ich habe heute versucht, certbot auf Centos 7 zu installieren. Ich folge dieser https://certbot.eff.org/#centosrhel7 -anderen Schritt für Schritt.
Wenn ich versuche, sudo certbot certonly
auszuführen, wurde mir mitgeteilt, dass urllib3 nicht gefunden wurde
nachdem ich pip install requests urllib3 pyOpenSSL --upgrade
Die Fehlermeldung ändert sich zu
ImportError: Dem 'pyOpenSSL'-Modul fehlen die erforderlichen Funktionen. Versuchen Sie ein Upgrade auf Version 0.14 oder neuer.
Ich habe den gleichen Fehler wie @DeronLee .
Etwas Neues?
@jcguevara Endlich fand ich, dass der beste Weg ist, Docker zu verwenden
Zumindest in einigen dieser Fälle bin ich misstrauisch gegenüber beschädigten Python-Umgebungen, in denen Pakete pip
installiert wurden, und überschreibt Versionen von Paketen, die von Ihrem Betriebssystem bereitgestellt werden. Wir empfehlen Ihnen dringend, dies nicht zu tun.
Wenn Sie sich bereits in dieser Position befinden, empfehle ich Ihnen, certbot-auto zu verwenden, das nur eine minimale Abhängigkeit von den Python-Paketen auf Ihrem System aufweist.
@DeronLee danke für deinen Rat.
Ich löse es einfach, indem ich es direkt von GitHub herunterlade und certbot-auto wie von @bmw empfohlen
@jcguevara Danke. Ich werde es später versuchen.
cerbot-auto funktioniert überraschenderweise! Warum gibt es dafür so viele zusätzliche Tools? (ˇˍˇ)
mac osx
+ Python2.7.13
openssl
überprüfen.0.9.8zh 14 Jan 2016
.brew install openssl
, lautet die aktuelle Version stable 1.0.2l
.brew install [email protected]
, verursacht diese Version ein Problem mit No Module Found Urllib3
.
brew uninstall [email protected]
# openssl: stable 1.0.2l
brew install openssl
Urllib3
behoben ist.Nach dem Ausführen dieses Befehls
pip install requests urllib3 pyOpenSSL --force --upgrade
Wie @DeronLee sagte:
Die Fehlermeldung ändert sich zu
ImportError: Dem 'pyOpenSSL'-Modul fehlen die erforderlichen Funktionen. Versuchen Sie ein Upgrade auf Version 0.14 oder neuer.
Ich installiere pyOpenSSL Version 16.2.0 und es hat bei mir funktioniert.
pip install pyOpenSSL==16.2.0
Vielen Dank. Ich versuche die neueste Version zu installieren, funktioniert aber nicht. Vielleicht ich
sollte die spezielle Version versuchen
Am 11. November 2017, 01:04 Uhr, "Nguyễn Thanh Tiến" [email protected]
schrieb:
Nach dem Ausführen dieses Befehls
Pip-Installationsanforderungen urllib3 pyOpenSSL --force --upgradeWie @DeronLee https://github.com/deronlee sagte:
Die Fehlermeldung ändert sich zu
ImportError: Dem 'pyOpenSSL'-Modul fehlen die erforderlichen Funktionen. Versuchen
Upgrade auf v0.14 oder neuer.Ich installiere pyOpenSSL Version 16.2.0 und es hat bei mir funktioniert.
pip install pyOpenSSL == 16.2.0- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
.
@ thanhtien522
Vielen Dank. Ich versuche die neueste Version zu installieren, funktioniert aber nicht. Vielleicht sollte ich die spezielle Version ausprobieren
@DeronLee kannst du mir sagen:
pip freeze
?@SwartzCr Ich habe das gleiche Problem mit @DeronLee
Also führe ich einen Befehl aus
pip install requests urllib3 pyOpenSSL --force --upgrade
und ich habe einen Fehler wie diesen bekommen:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
Dann habe ich versucht, was @ thanhtien522 erwähnt läuft
pip install pyOpenSSL==16.2.0
Aber es funktioniert immer noch nicht für mich, ich habe immer noch den gleichen Fehler, der mir sagt, dass pyOpenSSL
fehlt.
PRETTY_NAME="CentOS Linux 7 (Core)"
certbot.noarch 0.19.0-1.el7 @epel
yum install certbot-nginx
pip freeze
wird unten gezeigtacme==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
Es sieht so aus, als müssten wir in erster Linie die Version von pyOpenSSL, von der wir für certbot in Centos abhängig sind, verbessern. Folgendes bekomme ich bei einer Neuinstallation:
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
Wo es wohl eine Version über 0.14 sein sollte
Was könnte bedeuten, dass jemand es für Centos verpacken muss - @hogarthj die Person, an die ich mich wenden sollte?
Ja, hogarthj ist unser Red Hat / Fedora-Verpackungskontakt, reagiert jedoch schneller per E-Mail. Ich freue mich, Sie irgendwann vorstellen zu können, aber ich glaube nicht, dass hier Änderungen an seinem Ende erforderlich sind.
CentOS 7 ist eine unserer beliebtesten Plattformen und wir testen regelmäßig ohne Probleme auf CentOS 7. Die meisten Personen in diesem Thread berichten, dass sie Anfragen 2.18.x haben. Requests 2.6.0 ist in den CentOS 7-Repos enthalten. Wenn Sie Python-Pakete von Ihrem Betriebssystem und pip
mischen, werden Sie eine schlechte Zeit haben.
Benutzer von CentOS 7 mit diesem Problem können das Problem umgehen, indem sie die Änderungen an ihren Python-Paketen rückgängig machen, die über pip
oder indem sie certbot-auto verwenden, das das Problem
Ich habe diese Anweisungen befolgt (meine Version von urllib3 hat nicht so gut funktioniert) und dann konnte certbot ausgeführt werden ... Hoffentlich hilft das.
Ich bin sicher, dass diese in weniger Befehle zusammengefasst werden können ...
Pip Deinstallationsanforderungen
pip deinstalliere urllib3
yum entfernen python-urllib3
yum Python-Anfragen entfernen
yum installiere python-urllib3
yum installiere Python-Anfragen
yum install certbot
Ich habe es versucht, benutze diese Befehle und es funktioniert!
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
können wir pip später in der Zukunft verwenden, nachdem wir yum verwendet haben?
@sreezree Sie sollten pip nicht verwenden, um Certbot-bezogene Pakete zu installieren, da diese mit denen in Konflikt stehen, die Certbot installiert
Keine der oben genannten Methoden funktioniert bei mir, die Fehlermeldung bleibt gleich. ImportError: No module named 'requests.packages.urllib3'
Unter CentOS 7.4 tritt der gleiche Fehler auf:
ImportError: Kein Modul mit dem Namen 'request.packages.urllib3'
und versuchte smalenfants Lösungsvorschlag. Funktioniert wunderbar.
Ich habe den gleichen Fehler bekommen.
Ich habe festgestellt, dass bei der Installation von certbot ein Fehler aufgetreten ist
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
und ich versuche es neu zu installieren dann bekam den gleichen Fehler
# 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!
es ist gescheitert, aber die letzte Show Complete!
, wie ist es Complete!
?
Also fand ich, dass Tianchao-Freunde sagten, es sei ein Konflikt mit der Pip-Version
https://blog.csdn.net/u013614281/article/details/76832818
und ich deinstalliere pip version und installiere yum version
pip uninstall urllib3
yum install python-urllib3
Danach habe ich einen weiteren Fehler bekommen
pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests
Also, was zum Teufel, ich weine 😭
danach versucht
pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot
und es funktioniert .....
Ich denke also, dass die Anforderungsversion nicht mit urllib3 übereinstimmt
so versuchte es in einer anderen env-Maschine
Entfernen Sie zuerst die Anforderungen und urllib3
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
Installieren Sie Certbot
das OK
Dieser Fehler wird tatsächlich aufgrund eines fehlgeschlagenen Versuchs gedruckt. Fang im internen Python-Code der Anforderungen:
try:
import urllib3
except:
import requests.packages.urllib3
Dieses Problem tritt auf, wenn urllib3 nicht gefunden werden kann, aber auch, wenn urllib3 aus irgendeinem Grund nicht geladen werden kann.
Sie können den alten Cerbot entfernen und dann versuchen, ihn über pip zu installieren. was funktionieren sollte.
sudo pip install certbot
Ich habe es versucht, benutze diese Befehle und es funktioniert!
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
Großartig, Problem gelöst!
Die Installation per auftritt .
Zur Verdeutlichung wird auf RHEL 7-basierten Systemen die Verwendung von EPEL empfohlen .
Die Probleme in diesem Thread werden normalerweise durch eine fehlerhafte Python-Installation verursacht, die durch von pip
installierte Pakete verursacht wird, die im Widerspruch zu den von yum
installierten Paketen stehen. Das Entfernen der Pakete, die Sie über pip
installiert haben, sollte das Problem lösen.
Hilfreichster Kommentar
Aktualisieren. Dies scheint es behoben zu haben ...
pip install requests urllib3 pyOpenSSL --force --upgrade