Certbot: ImportError: Kein Modul mit dem Namen 'request.packages.urllib3'

Erstellt am 12. Sept. 2017  ·  37Kommentare  ·  Quelle: certbot/certbot

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?

fedora / redhat / CentOS pkging debugging

Hilfreichster Kommentar

Aktualisieren. Dies scheint es behoben zu haben ...

pip install requests urllib3 pyOpenSSL --force --upgrade

Alle 37 Kommentare

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? (ˇˍˇ)

Grund:

  • env: mac osx + Python2.7.13
  • Ihr solltet die Version openssl überprüfen.
  • Die standardmäßige OpenSL-Version von Mac OSX ist 0.9.8zh 14 Jan 2016 .
  • Wenn Sie brew install openssl , lautet die aktuelle Version stable 1.0.2l .
  • Wenn Sie jedoch brew install [email protected] , verursacht diese Version ein Problem mit No Module Found Urllib3 .

Wie repariert man:


brew uninstall [email protected]

# openssl: stable 1.0.2l
brew install openssl

  • Dann werden Sie feststellen, dass das Problem mit 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 --upgrade

Wie @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:

  • Welche Version Ihres Betriebssystems verwenden Sie?
  • Welche Version von Certbot haben Sie installiert?
  • Wie Sie Certbot installiert haben
  • Die Ausgabe von 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.

  • Betriebssystem: PRETTY_NAME="CentOS Linux 7 (Core)"
  • Certbot-Version: certbot.noarch 0.19.0-1.el7 @epel
  • Installierter Certbot durch Ausführen von yum install certbot-nginx
  • Und die Ausgabe von pip freeze wird unten gezeigt
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

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!

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen