Certbot: AttributeError: Das Objekt 'module' hat kein Attribut 'pyopenssl'.

Erstellt am 30. Aug. 2018  ·  35Kommentare  ·  Quelle: certbot/certbot

Wenn ich certbot so laufen lasse:
sudo certbot --nginx
Ich bekomme:

Traceback (most recent call last):
  File "/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.26.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 570, 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 2751, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2405, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2411, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 39, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'

meine python version ist 2.7.12 und linux os: 7.4

fedora / redhat / CentOS help wanted

Hilfreichster Kommentar

Das ist meine Lösung:

pip install requests==2.6.0
easy_install --upgrade pip

Alle 35 Kommentare

Ich vermute, dass dies auf einen Konflikt zwischen Python-Paketen zurückzuführen ist, die von Ihrem OS-Paketmanager installiert wurden, und pip wie in # 6245.

Auf welchem ​​Linux-Betriebssystem arbeiten Sie und wie haben Sie Certbot installiert?

Ich habe den gleichen (oder größtenteils ähnlichen) Fehler:

# yum install certbot
...
Running transaction
  Installing : pyOpenSSL-0.13.1-3.el7.x86_64                                                                                                                                                            1/6
  Installing : python2-josepy-1.1.0-1.el7.noarch                                                                                                                                                        2/6
  Installing : python-ndg_httpsclient-0.3.2-1.el7.noarch                                                                                                                                                3/6
  Installing : python2-acme-0.26.1-1.el7.noarch                                                                                                                                                         4/6
  Installing : python2-certbot-0.26.1-2.el7.noarch                                                                                                                                                      5/6
  Installing : certbot-0.26.1-2.el7.noarch                                                                                                                                                              6/6
  Verifying  : pyOpenSSL-0.13.1-3.el7.x86_64                                                                                                                                                            1/6
  Verifying  : python2-josepy-1.1.0-1.el7.noarch                                                                                                                                                        2/6
  Verifying  : python2-acme-0.26.1-1.el7.noarch                                                                                                                                                         3/6
  Verifying  : python2-certbot-0.26.1-2.el7.noarch                                                                                                                                                      4/6
  Verifying  : certbot-0.26.1-2.el7.noarch                                                                                                                                                              5/6
  Verifying  : python-ndg_httpsclient-0.3.2-1.el7.noarch                                                                                                                                                6/6

Installed:
  certbot.noarch 0:0.26.1-2.el7

Dependency Installed:
  pyOpenSSL.x86_64 0:0.13.1-3.el7    python-ndg_httpsclient.noarch 0:0.3.2-1.el7    python2-acme.noarch 0:0.26.1-1.el7    python2-certbot.noarch 0:0.26.1-2.el7    python2-josepy.noarch 0:1.1.0-1.el7     

Complete!
# certbot --version
Traceback (most recent call last):
  File "/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.26.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 39, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'

Betriebssystemversion: CentOS Linux Release 7.5.1804 (Core)

Edit2: In Bezug auf https://github.com/certbot/certbot/issues/6245 wurde python-urllib3 mit yum installiert, und in der aktuellen Version (1.10.2-5.el7) ist der erwähnte Symlink nicht enthalten packages/ssl_match_hostname aber als reguläres Verzeichnis mit Dateien darin.

Der Versuch, das Problem zu reproduzieren, führte mich zu folgendem Ergebnis:

# python
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib3.contrib.pyopenssl
>>> urllib3.contrib.pyopenssl.inject_into_urllib3()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 118, in inject_into_urllib3                                                                                                   
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 153, in _validate_dependencies_met                                                                                            
    raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
>>>
# yum info pyOpenSSL
...
Installed Packages
Name        : pyOpenSSL
Arch        : x86_64
Version     : 0.13.1
Release     : 3.el7
Size        : 628 k
Repo        : installed

Anscheinend gibt es also eine stille Versionsabhängigkeit für urllib3.contrib.pyopenssl von pyOpenSSL v0.14, die von Centos7 derzeit nicht bereitgestellt wird.

Bearbeiten: Nach der Installation einer neueren Version (0.15.1) von https://cbs.centos.org/koji/buildinfo?buildID=1500 verschwindet der obige Fehler, nicht jedoch der von certbot generierte Fehler.

Ein Versuch und Irrtum mit usr/lib/python2.7/site-packages/acme/client.py führte mich zu der Entdeckung, dass der Fehler verschwindet, wenn ich den Import von from requests_toolbelt.adapters.source import SourceAddressAdapter kommentiere!
Glücklicherweise wird dies nur einmal verwendet. Solange ich ein source_address gebe, kann ich mit diesem nicht so subtilen Fix davonkommen. :) :)

@ github-abcde, ich würde empfehlen, unter https://community.letsencrypt.org zu posten

python -c 'import requests; requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()'

und

python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'

arbeite für mich.

Darüber hinaus enthält /usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py nach der Installation von python-urllib3 1.10.2-5.el7 keinen Code zum Auslösen einer Ausnahme, wenn die pyOpenSSL-Version kleiner als 0,14 ist.

Ich denke, Sie haben eine Mischung aus Paketen aus verschiedenen Quellen. Unter https://community.letsencrypt.org gibt es eine größere Community, die Ihnen helfen kann, das Problem aufzuspüren.

Du hast recht. Nach eingehender Suche stellte sich heraus, dass etwas, das ein Modul mit pip3 hätte installieren sollen, es tatsächlich mit python -m pip ... mit python2.7 installiert und das urllib3/conrtib/pyopenssl.py überschrieben ... Danke für deine Hinweise, die mich gezwungen haben weiter zu schauen :)

Das gleiche Problem habe ich hier.

Datei "/usr/lib/python2.7/site-packages/acme/client.py", Zeile 39, in
urllib3.contrib.pyopenssl.inject_into_urllib3 ()
AttributeError: Das Objekt 'module' hat kein Attribut 'pyopenssl'.

Centos 7.3

Das ist meine Lösung:

pip install requests==2.6.0
easy_install --upgrade pip

Ich sehe das jetzt auch. Eine neue Centos 7-Installation, bei der nichts anderes über pip und certbot über yum installiert wurde

Linux localhost.localdomain 3.10.0-862.2.3.el7.x86_64 # 1 SMP Mi 9. Mai 18:05:47 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

@monkeyWies Tipp hat bei mir nicht funktioniert

[ vagrant @ localhost ~] $ pip Installationsanforderungen == 2.6.0
Anforderung bereits erfüllt: Anfragen == 2.6.0 in /usr/lib/python2.7/site-packages

Ich habe certbot bis vor ein paar Tagen verwendet, als ich es bei keinem meiner neuen Centos 7-Builds zum Laufen bringen konnte.

vagrant<strong i="14">@localhost</strong> ~]$ sudo certbot --nginx
Traceback (most recent call last):
  File "/usr/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.27.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 484, 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 2714, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2332, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2338, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 36, in <module>
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()  # type: ignore
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 118, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 153, in _validate_dependencies_met
    raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

Probleme wie dieses werden durch die globale Installation von Paketen sowohl von yum als auch von pip . Leider kann ich Ihnen nicht dabei helfen, die Python-Umgebung auf Ihrem System zu bereinigen. Wenn Sie jedoch auf https://community.letsencrypt.org posten, gibt es dort eine große Benutzerbasis, die Ihnen helfen kann.

Ich hatte eine Neuinstallation von Centos 7.6 und fügte hinzu, dass Certbot von Epel Repo das gleiche Problem verursachte. Problem durch Ausführen behoben
pip install requests==2.6.0

Ich sehe, dass dies immer noch ein Problem ist.

Gleich.
CentOS Linux Release 7.6.1810 (Core)
Installieren:

sudo yum install certbot python2-certbot-nginx

Und Renn:

# certbot --help
Traceback (most recent call last):
  File "/usr/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.31.0', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 40, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'

Das ist meine Lösung:

pip install requests==2.6.0
easy_install --upgrade pip

Arbeitete für mich an Centos 7

Einverstanden. Die Standardinstallation mit yum funktioniert nicht. Muss es danach reparieren
Erstinstallation. Man möchte, dass es in einem funktionierenden Zustand installiert wird.

Am Sonntag, 14. April 2019, 07:54 Uhr Michael Lindner, [email protected]
schrieb:

Das ist meine Lösung:

Pip-Installationsanforderungen == 2.6.0
easy_install --upgrade pip

Arbeitete für mich an Centos 7

- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/certbot/certbot/issues/6328#issuecomment-482922170 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AMsov79Wu4KJJLs0jJUN-fhs6WO2YROuks5vgsKzgaJpZM4WS5Gq
.

Wenn jemand Anweisungen zur Reproduktion geben kann, idealerweise in Docker, würde ich gerne einen weiteren Blick darauf werfen, aber ich glaube immer noch, dass dies nur auftritt, wenn Sie Python-Pakete aus mehreren Quellen installiert haben.

Dies wird normalerweise dadurch verursacht, dass Pakete sowohl von yum als auch von pip installiert werden und die mit pip installierten Pakete entfernt und mit yum neu installiert werden Problem.

Ich kann bestätigen, dass dies bei einer Neuinstallation von Centos 7.6 mit dem geschieht
EPEL-Repo zum Hinzufügen von Certbot.

Am Montag, 15. April 2019, 19:35 Uhr schrieb Brad Warren, [email protected] :

Wenn jemand Anweisungen zur Reproduktion geben kann, idealerweise in
so etwas wie Docker, ich würde gerne noch einen Blick darauf werfen, aber ich immer noch
Ich glaube, dies tritt nur auf, wenn Sie Python-Pakete von mehreren installiert haben
Quellen.

Dies wird normalerweise durch die Installation von Paketen von yum und pip und verursacht
Entfernen Sie die mit pip installierten Pakete und installieren Sie sie erneut
mit yum sollte das problem lösen.

- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/certbot/certbot/issues/6328#issuecomment-483346939 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AMsovzeRLjz2j0odmgWGxyyAVy9VBp3Tks5vhLhLgaJpZM4WS5Gq
.

Ich hatte dieses Problem (Centos)
[bob<strong i="6">@bla</strong> ~]# certbot renew 2>&1 | tail -2 urllib3.contrib.pyopenssl.inject_into_urllib3() AttributeError: 'module' object has no attribute 'pyopenssl'
und pip ist nicht installiert
[bob<strong i="10">@bla</strong> ~]# pip install requests==2.6.0 -bash: pip: command not found

Ich kann bestätigen, dass dies bei einer Neuinstallation von Centos 7.6 mit dem EPEL-Repo zum Hinzufügen von Certbot geschieht.

Leider kann ich es nicht in Docker oder einem VPS reproduzieren.

Ich würde immer noch gerne sehen, wie es jemandem gelingt, dies in etwas leicht Wiederholbarem wie Docker zu reproduzieren, aber in der Zwischenzeit ist die Ausgabe der folgenden Befehle für jemanden, der das Problem trifft

python -c 'import certbot, requests, urllib3, OpenSSL; print("certbot :", certbot.__version__); print("requests: ", requests.__version__); print("urllib3 :", urllib3.__version__); print("OpenSSL :", OpenSSL.__version__)'
ls /usr/lib/python2.7/site-packages/urllib3/contrib

Interessant. Dies ist die zweite Neuinstallation, die ich für Centos 7 durchgeführt habe.

Dieses Mal habe ich eine Neuinstallation mit der minimalen ISO durchgeführt und es funktioniert. Ich sehe, dass das installierte Centos-Anforderungspaket ebenfalls 2.6 ist. Möglicherweise wurden die Anforderungen aktualisiert, da dieses Problem ursprünglich aufgetreten ist.
python2-requests-2.6.0-0.el7.noarch

[root<strong i="9">@centos7</strong> ~]# python -c 'import certbot, requests, urllib3, OpenSSL; print("certbot :", certbot.__version__); print("requests: ", requests.__version__); print("urllib3 :", urllib3.__version__); print("OpenSSL :", OpenSSL.__version__)'
('certbot :', '0.31.0')
('requests: ', '2.6.0')
('urllib3 :', '1.10.2')
('OpenSSL :', '0.13.1')
[root<strong i="10">@centos7</strong> ~]# ls /usr/lib/python2.7/site-packages/urllib3/contrib
__init__.py  __init__.pyc  __init__.pyo  ntlmpool.py  ntlmpool.pyc  ntlmpool.pyo  pyopenssl.py  pyopenssl.pyc  pyopenssl.pyo
[root<strong i="11">@centos7</strong> ~]# certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certbot doesn't know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run "certbot certonly" to do so. You'll need to manually configure your web server to use the resulting certificate.

Dieses Problem tritt bei Centos 7.6 zusammen mit Ovirt 4.3 auf. Paketversionen sind

from EPEL:
certbot-0.31.0-2.el7.noarch

from ovirt-4.3-centos-opstools:
python2-requests-2.19.1-4.el7.noarch 
python2-pyOpenSSL-17.3.0-3.el7.noarch

Es scheint, dass etwas Seltsames mit dem Namespace urllib3.contrib passiert oder so?

>>> import requests
>>> requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'pyopenssl'
>>> import urllib3.contrib.pyopenssl
>>> urllib3.contrib.pyopenssl.inject_into_urllib3()
>>> dir(urllib3.contrib)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'pyopenssl', 'socks']
>>> from acme import client as acme_client
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/acme/client.py", line 40, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'
>>> dir(urllib3.contrib)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'appengine']

Das Problem verschwindet, wenn ich dies in acme/client.py mache:

if sys.version_info < (2, 7, 9):  # pragma: no cover
    import requests.packages.urllib3.contrib.pyopenssl  # pylint: disable=import-error
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()  # type: ignore

Das ist meine Lösung:

pip install requests==2.6.0
easy_install --upgrade pip

arbeitete für mich unter CentOS 7

Danke @monkeyWie - hat für mich unter CentOS7 gearbeitet

Das ist meine Lösung:

pip install requests==2.6.0
easy_install --upgrade pip

pip install acme
arbeitete für mich auf Centos 7, nachdem ich diesen Fehler gesehen hatte

FEHLER: Für certbot 1.0.0 ist acme> = 0.40.0 erforderlich, was nicht installiert ist.

PS Installieren Sie alles von Pip, anstatt von Centos-Paketen, sie sind manchmal alt

Ich kann bestätigen, dass dies bei einer Neuinstallation von Centos 7.6 mit dem EPEL-Repo zum Hinzufügen von Certbot geschieht.

Leider kann ich es nicht in Docker oder einem VPS reproduzieren.

Ich würde immer noch gerne sehen, wie es jemandem gelingt, dies in etwas leicht Wiederholbarem wie Docker zu reproduzieren, aber in der Zwischenzeit ist die Ausgabe der folgenden Befehle für jemanden, der das Problem trifft

python -c 'import certbot, requests, urllib3, OpenSSL; print("certbot :", certbot.__version__); print("requests: ", requests.__version__); print("urllib3 :", urllib3.__version__); print("OpenSSL :", OpenSSL.__version__)'
ls /usr/lib/python2.7/site-packages/urllib3/contrib

@bmw meine Ergebnisse sind wie folgt:

('certbot :', '1.0.0')
('requests: ', '2.6.0')
('urllib3 :', '1.25.7')
('OpenSSL :', '0.13.1')

_appengine_environ.py   appengine.py   __init__.py   ntlmpool.py   pyopenssl.py   _securetransport    securetransport.pyc  socks.pyc
_appengine_environ.pyc  appengine.pyc  __init__.pyc  ntlmpool.pyc  pyopenssl.pyc  securetransport.py  socks.py

das scheint mir okay zu sein. aber diese anderen Tests scheinen fehlzuschlagen:

$ python -c 'import requests; requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'packages'

$ python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 118, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 160, in _validate_dependencies_met
    "'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

Die Version von urllib3 die in RHEL 7-basierten Systemen enthalten ist, ist 1.10.2, aber Sie haben 1.25.7. Dies wurde wahrscheinlich über pip installiert. Das Entfernen von urllib3 und die Neuinstallation über yum sollte dieses Problem beheben.

Wenn Sie hierzu zusätzliche Hilfe benötigen, empfehle ich, auf https://community.letsencrypt.org zu posten, wo sich eine große Gruppe von Personen befindet, die mit Certbot und der Serververwaltung vertraut sind und Ihnen helfen können sollten.

JFYI. Ich hatte das gleiche Problem, aber ich habe weder pip / pip2 noch manuell installierte Pip-Pakete.

In meinem Fall hatte ich centos-release-opstools was python2-urllib3 1.21.1-1.el7 and python2-Anfragen 2.19.1-4.el7` brachte.

Nachdem ich dieses Repo deaktiviert und relevante Pakete neu installiert hatte (sie werden ab CentOS 7.7 in python-urllib3 1.10.2-7.el7 und python-requests 2.6.0-8.el7_7 ), verschwand das Problem.

@ Grossws , danke für die Info. Erinnerst du dich an deine Fehlermeldung?

Wenn ich versuche, dieses Setup neu zu erstellen, stürzt Certbot ab mit:

# certbot --help
Traceback (most recent call last):
  File "/usr/bin/certbot", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 3011, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 630, in resolve
    raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (cryptography 1.7.2 (/usr/lib64/python2.7/site-packages), Requirement.parse('cryptography>=1.9'))

Dies liegt daran, dass das python2-pyOpenSSL 17.3.0-3.el7 -Paket behauptet, python-cryptography >= 1.3.0 erfordern, aber die in Python angegebene Abhängigkeit ist cryptography>=1.9 die nicht installiert ist.

@bmw , ich hatte einen ähnlichen Stacktrace wie in https://github.com/certbot/certbot/issues/6328#issuecomment -482531925

Ich habe versucht, es in einem Container mit nur epel-release + centos-release-opstools zu reproduzieren, habe aber den gleichen Versionskonflikt über cryptography . Ich habe mir das ursprüngliche System angesehen, bei dem ein Fehler aufgetreten ist, und festgestellt, dass ich ein neueres python2-cryptography von centos-release-ovirt42 Repo habe.

Um zu reproduzieren, können Sie Docker-Container mit centos:7 ausführen und tun

yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y certbot
certbot --help`

Das macht Spaß (abhängig von Ihrer Definition von Spaß).

Wenn Sie centos:7 Docker-Image

yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y python-requests-toolbelt python2-urllib3
python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'
python -c 'from requests_toolbelt.adapters.source import SourceAddressAdapter; import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'

Der erste Python-Befehl ist erfolgreich, während der zweite fehlschlägt. Der einzige Unterschied ist der Import von from requests_toolbelt.adapters.source import SourceAddressAdapter .

Wir planen, die Python 2-Unterstützung in den nächsten Monaten einzustellen. Ab diesem Zeitpunkt können wir diesen Code löschen. Aus diesem Grund wird das kleine Team, das Certbot unterhält, wahrscheinlich nicht viel Zeit damit verbringen, aber wenn sich jemand damit befassen möchte, wäre es meiner Meinung nach gut, den Paketbetreuern zu melden, was auch immer dieses Problem verursacht .

Ich öffne das jetzt wieder.

Ich denke, die Annahme einer Form von Korruption ist richtig. Ich hatte keinen Python2-Pip installiert, daher bin ich mir nicht sicher, was ich kaputt gemacht habe. Dies löste jedoch die Dinge aus:

yum remove python-urllib3
rm -rf /usr/lib/python2.7/site-packages/urllib3 # yes, you need this too
yum reinstall $(yum list installed | grep python | grep -v python3 | awk '{print $1}')
yum install python-urllib3
yum install certbot

Hoffe das hilft jemandem.

Dies funktionierte in meiner Umgebung (Centos 7 mit aktualisiertem urllib3 von pip als @bmw, wie

sudo yum install -y python2-pip
sudo pip uninstall urllib3
sudo yum install -y python-urllib3

Fedora / CentOS Certbot-Betreuer hier: Bitte installieren Sie Module NIEMALS mit /usr/lib auf pip . Einige CentOS-Pakete wurden so geändert, dass sie keinen vorhandenen Code duplizieren oder die Sicherheitseinstellungen verbessern. Die Distributions-Packager sollten sicherstellen, dass alle erforderlichen Pakete installiert sind.

Mit diesem Befehl können Sie Ihre Installation auf nicht verwaltete Python-Pakete überprüfen:

LANG=C rpm -qf /usr/lib/python2.7/site-packages/* | grep 'is not owned by any package'

Sie sollten keine Ausgabe erhalten.

Auch das Hinzufügen anderer leckerer Repos kann problematisch sein. Fedora EPEL sollte zu 100% mit den Basis-Repos von Red Hat / CentOS funktionieren, aber wir können keine anderen Repos berücksichtigen.

Wenn Sie nur die Standard-CentOS-Repos (+ EPEL) aktiviert haben und dennoch abstürzen, teilen Sie uns dies bitte mit. Die beste Methode ist , ein Bugzilla-Problem zu

@FelixSchwarz , was ist mit CentOS SIG Repo-Paketen wie centos-release-opstools ? Normalerweise verwende ich Standard-Repos + Epel, aber fluentd ist nur in opstools (

In einigen Fällen habe ich gerade die Erstellung einer virtuellen Umgebung mit python3 -mvenv /path/to/new/venv und dort die erforderliche Software installiert (z. B. certbot + erforderlicher DNS-Verifizierer). Zum Glück verschmutzt es nicht /usr/lib .

@grossws Fedora EPEL sollte mit allem von RHEL Base funktionieren (daher kann es andere geschichtete Red Hat-Produkte geben, die Konflikte verursachen). Alle anderen Quellen können inkompatibel sein, es sei denn, diese Repos sind sehr vorsichtig, sodass sie nicht das gleiche Material wie RHEL / EPEL liefern.

Ich habe gerade die Repos von Centos- Opstools überprüft und sofort einige Konflikte mit Fedora EPEL bemerkt:

  • python2-msgpack: EPEL 7 hat 0.5.6-5.el7 , Opstools 0.4.6-3.el7 (nicht relevant für certbot aber für Borgbackup, das ich auch in Fedora / EPEL
  • python2-Anfragen: EPEL 7 hat 2.6.0-0.el7 , Opstools 2.19.1-4.el7
  • python2-urllib3: EPEL 7 1.10.2-7.el7 ( python-urllib3 ), Opstools 1.21.1-1.el7
  • python-idna: RHEL Base liefert 2.4-1.el7 , Opstools 2.5-1.el7 ( python2-idna )

Das bedeutet nicht, dass das centos-opstools -Repo nicht mit den certbot -Paketen von EPEL funktioniert, aber es gibt einige Konflikte und dies ist definitiv eine ungetestete Konfiguration. Außerdem ersetzt centos-opstools ein Paket in der RHEL-Basis, was bedeutet, dass Sie besonders vorsichtig sein sollten, da dies auch eine Menge Dinge in der Hauptdistribution beschädigen könnte.

tl; dr: Wenn Sie die Certbot-Pakete von EPEL verwenden, sollten Sie keine anderen yum / dnf-Repos verwenden, da diese wahrscheinlich nicht kompatibel sind. Fragen Sie den Repo-Anbieter nach der Kompatibilität mit RHEL Base und Fedora EPEL.

Ich fand auch, dass es nicht so schwer war, einen Beitrag zu Fedora EPEL zu leisten. Wenn Sie also ein Paket vermissen, sollten Sie in Betracht ziehen, Paketbetreuer zu werden (rufen Sie mich an, wenn Sie Hilfe benötigen).

Ich denke, die Annahme einer Form von Korruption ist richtig. Ich hatte keinen Python2-Pip installiert, daher bin ich mir nicht sicher, was ich kaputt gemacht habe. Dies löste jedoch die Dinge aus:

yum remove python-urllib3
rm -rf /usr/lib/python2.7/site-packages/urllib3 # yes, you need this too
yum reinstall $(yum list installed | grep python | grep -v python3 | awk '{print $1}')
yum install python-urllib3
yum install certbot

Hoffe das hilft jemandem.

Dies hat in meinem Fall geholfen (andere Lösungen aus diesem Thema haben dies nicht getan). Vielen Dank.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen