Neben der Antwort frmdstryr
gegeben, musste ich sagen requests
, wenn das cacert.pem
beträgt. Ich fügte hinzu, die folgenden Zeilen direkt nach meinen Importen:
Diese Lösung von dieser Verbindung abgeleitet ist: Ссылка
Ich habe gerade ein Python-Programm getestet, das die Anmeldung bei einer Site erfordert und die Einrichtung eines CSRF-Cookies erfordert. Ich habe versucht, es als eine exe mit py2exe
und bekam einen Socket-Fehler. Ich habe das gleiche Problem, wenn ich mit PyInstaller
versuche. Bei der Suche nach dem Errno habe ich ein paar andere Leute mit dem gleichen Problem gefunden und daher weiß ich, dass das Problem mit dem Speicherort von SLL-Zertifikaten zu tun hat.
Dies ist meine site_agent
-Klasse einschließlich der Protokollierungsaufrufe.
Der Fehler kommt in der Zeile self.agent.get(URL)
und der Trace-Back zeigt:
Bedeutet das, dass das Problem in requests.adapters
ist?
Wenn ja, kann ich es einfach in meinen installierten Python-Paketen bearbeiten, um woanders nach cacert.pem zu suchen, meine exe mit py2exe
oder PyInstaller
neu aufzubauen und sie dann in meiner installierten Version von Python zu ändern?
BEARBEITEN
Ich habe jetzt das Programm nach dem Kompilieren mit PyInstaller
und dem Setzen von verify=False
in allen requests.get()
und requests.post()
Aufrufen ausgeführt. Aber SSL gibt es aus einem bestimmten Grund und ich möchte diesen Fehler wirklich beheben können, bevor jemand das Tool benutzen darf.
Dies kann leicht gelöst werden, wenn Sie das Modul "Anfragen" verwenden.
1) Fügen Sie den folgenden Code in Ihre Haupt-Python-Datei ein, in der das Modul "requests" verwendet wird.
%Vor%2) Erstellen Sie in Ihrem verteilbaren Ordner, in dem exe vorhanden ist, einen Ordner namens "certifi" und legen Sie die Datei "cacert.pem" darin ab.
3) Sie finden die Datei "cacert.pem" mit
%Vor%Super. Jetzt enthält Ihr distributable die notwendigen Zertifikate, um SSL-Aufrufe zu validieren.
Tags und Links python ssl pyinstaller py2exe python-requests