Fehler beim Laden: Laden der DLL fehlgeschlagen: Das Betriebssystem kann% 1 nicht ausführen - Python 2.7; Scrapy Modul; Kryptographie importieren

9

Ich kann den ersten Befehl im Scrapy-Lernprogramm (http://doc.scrapy.org/en/latest/intro/tutorial.html) nicht erfolgreich ausführen. Die unten eingefügte Code-Kopie ist das Ergebnis (mit dem Fehler am Ende).

Python 2.7 ist installiert und ich habe die Installationsanweisungen für scrapy (http://doc.scrapy.org/en/latest/intro/install.html) befolgt. Ich verwende Python 2.7.6 32 Bit unter Windows 7 (64 Bit) .

Weitere Aspekte der Installation:

  1. Twisted-13.2.0.dist-info
  2. zope.interface-4.1.1-py2.7
  3. Scrapy-0.22.2-py2.7
  4. lxml-3.3.3-py2.7
  5. cssselect-0.9.1-py2.7
  6. cryptography-0.3.dist-info
  7. pyOpenSSL-0.14-py2.7
  8. pywin32_system32

Und hier ist die Fehlermeldung:

%Vor%     
user1944254 02.04.2014, 03:06
quelle

8 Antworten

6

Ich hatte dieses Problem aufgrund einer anderen (älteren?) Version von libeay32.dll und ssleay32.dll, die sich auf dem PATH vor denen meiner eigenen OpenSSL 1.0.1g Installation befanden. Ich empfehle Ihnen, Process Monitor von SysInternals zu verwenden, um python.exe zu überwachen, um zu sehen, wo es Ihr OpenSSL tatsächlich lädt DLLs von.

In meinem Fall war der Täter einige Intel-Komponenten bei C:\Program Files (x86)\Intel\iCLS Client\ , die mit meinen Treibern geliefert wurden. Nachdem ich mein eigenes OpenSSL-Verzeichnis früher in der Umgebungsvariable PATH verschoben hatte, funktionierte alles wie erwartet.

    
voetsjoeba 26.05.2014 21:48
quelle
4

Dies liegt an _Cryptography_cffi_48bbf0ebx93c91939.pyd hängt von openssl dll ssleay32.dll und libeay32.dll ab. Nachdem Sie openssl auf Windows kompiliert haben, können Sie diese 2 Dateien nach system32 kopieren.

    
lambokini 10.04.2014 03:00
quelle
4

@ crazyzh1984 Methode ist ein wenig komplex, aber seine Ergänzung, die am Ende seiner Antwort geschrieben ist sehr nützlich. Ich lade das "Win32 OpenSSL v1.0.1g Light" unter Ссылка herunter und installiere pyOpenSSL erfolgreich.

    
magigo 01.05.2014 17:23
quelle
2

@lambokini hat recht, aber ich kann die Antwort kommentieren, also kommt diese.

Laden Sie zuerst die openssl-Quelle von Ссылка

herunter

Zweiter Start "Visual Studio-Eingabeaufforderung", kompilieren und installieren Sie openssl folgen Installationsanleitung (INSTALL.W32 oder INSTALL.W64).

Fügen Sie dann "[openssl install path] \ bin" zur Umgebungsvariable "path" hinzu, und Sie können ssleay32.dll und libeay32.dll unter system32 löschen.

Hinweis: dll wird von der ersten Stelle geladen werden, die es gesucht. Zum Beispiel: Pfad = xxx; d: \ PHP5; d: \ openssl \ bin; Wenn ssleay32.dll und libeay32.dll auch unter PHP5 erscheinen, dann wird python diesen laden.

    
crazyzh1984 16.04.2014 09:29
quelle
1

Ich werde meine eigene Meinung dazu aufgrund meiner extremen Frustration niederschreiben und hoffe, dass dies einem anderen armen Kerl helfen könnte, der Probleme mit seiner Arbeit am Fenster hat.

Hatte ähnliche Probleme mit fehlerhaften libeay32.dll und ssleay32.dll, oder so scheint es, aber bestätigte es mit Prozessmonitor .

Alles ging zur Hölle, nachdem diese DLLs in System32 gefunden wurden:

Also habe ich nicht unter falschem PATH s gelitten (aber ich habe ihre Reihenfolge geändert, also kommt system32 vor C:\Program Files (x86)\Intel\iCLS Client\ .

Als nächstes habe ich diese Seite benutzt, auf die die anderen hier hingewiesen haben. Ich habe Win32 OpenSSL v1.0.2j Light verwendet, da das neuere (1.1.0b) aus irgendeinem Grund diese DLLs für mich nicht generiert hat.

Generieren Sie sie in einem anderen Ordner, damit sie als neu angezeigt werden, und kopieren Sie sie anschließend in system32. Voila, scrapy Befehlszeile funktioniert.

Ab sofort erstellt anacondas scrapy 1.1.2 keine Schlüsseldatei zum Ausführen von scrapy-Befehlen, ich habe eine Frage zu diesem Problem geöffnet und geschlossen. hier .

    
Olegp 01.10.2016 10:26
quelle
1

Wie bereits in den anderen Antworten erwähnt, wird das Problem durch die beiden Dateien ssleay32.dll und libeay32.dll verursacht. Der Fehler ist aufgetreten, als OpenSSL in Python importiert wurde

%Vor%

So habe ich das Problem unter Windows 10 gelöst. Wenn Sie git für Windows haben (laden Sie hier herunter), können Sie diese einfach kopieren zwei Dateien von Git\mingw64\bin\ an einen Ort in deinem Pfad. Was für mich funktionierte, war, sie nach c:\Windows zu kopieren (oder in den Ordner, von dem aus Sie Python starten).

Um die Speicherorte der DLL-Dateien zu finden, geben Sie Folgendes an einer Eingabeaufforderung mit dem Befehl cmd ein:

%Vor%     
user2314737 22.11.2017 21:06
quelle
0

Ich bin heute auf einem Windows 7-System über diesen Fehler gestolpert. Das Problem für mich war ähnlich wie @ user2314737, @voetsjoeba und @Olegp. libeay32.dll und ssleay32.dll in Ordnern, die sich auf Intel beziehen, die sich in der Umgebungsvariable Windows path befanden.

Leider ist mein System gesperrt (Arbeitscomputer), daher konnte ich die Dateien nicht verschieben oder die Pfadvariable des Systems nicht ändern. Stattdessen habe ich die Intel-bezogenen Elemente manuell aus der Pfadvariablen entfernt, auf die Python zugreift:

%Vor%     
James 06.12.2017 03:14
quelle
0

Wie bereits oben erwähnt, gibt es zwei .dll-Dateien, die anstelle von openssl geladen werden, das mit Scrapy heruntergeladen wird. Diese beiden DLL-Dateien sind nicht kompatibel.

Ich habe dies gelöst, indem ich die heruntergeladenen .dll-Dateien (ich habe Anaconda zur Installation von scrapy verwendet) als eine höhere Priorität in den Umgebungsvariablen platziert habe, wie im angehängten Bild gezeigt.

In Umgebungsvariablen, innerhalb der Systemvariablen und des "Pfades" habe ich die Anaconda3-Position wie oben gezeigt oben platziert und mache daher die Priorität, wenn python openssl lädt

    
nevster 18.12.2017 15:06
quelle

Tags und Links