Wie installiere ich PyCrypto unter Windows?

139

Ich habe jede andere Google-Quelle und jeden SO-Thread gelesen, ohne dass etwas funktioniert.

Python 2.7.3 32bitinstalliert am Windows 7 64bit. Das Herunterladen, Extrahieren und anschließende Installieren von PyCrypto führt zu"Unable to find vcvarsall.bat".

Also installiere ich MinGW und gehe das in der Installationszeile als Compiler der Wahl an. Aber dann bekomme ich den Fehler"RuntimeError: chmod error".

Wie um alles in der Welt komme ich darum herum? Ich habe versucht, pip zu verwenden, was das gleiche Ergebnis liefert. Ich habe eine vorgefertigte PyCrypto 2.3-Binärdatei gefunden und diese installiert, aber sie ist auf dem System nirgends zu finden (funktioniert nicht).

Irgendwelche Ideen?

Coldblackice
quelle
16
Wenn Sie es nur installieren möchten , laden
bobobobo
12
Das ist ein sehr kühner Rat, ein binäres Kryptografiepaket von einem unbekannten Server aus Übersee zu installieren ...
Darren Ringer
Obwohl ich mich letztendlich für die gewählte Antwort entschieden habe, gab ich schließlich nach und schaffte es, das Paket selbst zu erstellen (obwohl ich mir sicher nicht die Mühe gemacht habe, irgendwelche Unterschriften auf irgendetwas zu überprüfen, denn wirklich, sind wir jemals wirklich sicher?) Paranoia und Apathie Abgesehen davon löste der folgende Link jedoch alle meine schwierigsten Probleme und machte den Prozess zum Kinderspiel
Darren Ringer
4
PyCrypto ist tot. Der Autor hat es für eine Weile fallen gelassen. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Antworten:

184

Wenn Sie noch keine C / C ++ - Entwicklungsumgebung installiert haben, die mit den von Python.org vertriebenen Visual Studio-Binärdateien kompatibel ist, sollten Sie nur reine Python-Pakete oder -Pakete installieren, für die eine Windows-Binärdatei verfügbar ist.

Glücklicherweise sind PyCrypto-Binärdateien für Windows verfügbar: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

UPDATE:
Wie @Udi im Kommentar unten vorschlägt, wird der folgende Befehl ebenfalls installiert pycryptound kann auch verwendet werden virtualenv:

easy_install http://www.voidspace.org.uk/python/pycrypto-2.6.1/pycrypto-2.6.1.win32-py2.7.exe

Beachten Sie, dass Sie aus dieser Liste den entsprechenden Link für Ihr Setup auswählen müssen

Wenn Sie nach Builds für Python 3.5 suchen, lesen Sie PyCrypto unter Python 3.5

Michael Dillon
quelle
28
Sie können easy_install verwenden, um die Binärdateien von der URL zu installieren:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi
Das Installationsprogramm unter voidspace.org.uk/python/modules.shtml#pycrypto hat für mich funktioniert. Ein Tipp: Wenn Sie versehentlich das 64-Bit-Installationsprogramm ausführen, aber eine 32-Bit-Version von Python 2.7 haben, schlägt das Installationsprogramm mit der Warnung "Python-Version 2.7 erforderlich, die nicht in der Registrierung gefunden wurde" fehl.
Steve Saporta
1
GUI-Installer für mich fehlgeschlagen. easy_install war erfolgreich
pscheit
@Udi warum brauchst du easy_install für eine exe?
Smit Johnth
@SmitJohnth easy_installinstalliert das Paket in einer virtuellen Umgebung (falls vorhanden) und unterdrückt alle grafischen Interaktionen (um zu automatisieren oder einfach nur Zeit zu sparen).
Udi
32

Microsoft hat kürzlich einen eigenständigen, dedizierten Microsoft Visual C ++ - Compiler für Python 2.7 veröffentlicht . Wenn Sie Python 2.7 verwenden, installieren Sie einfach diesen Compiler und Setuptools 6.0 oder höher. Die meisten Pakete mit C-Erweiterungen können jetzt problemlos kompiliert werden.

Jason R. Coombs
quelle
Wow, wie interessant. Aber immer noch 84 Mb. Und etwas zu spät, siehe meine Antwort zum Thema Rad.
Smit Johnth
1
Selbst mit einem Rad ist dies bei weitem eine bessere Option, als den Kopf gegen VS 2008 und vcvarsall.bat zu schlagen, wenn Sie etwas aus der Quelle erstellen oder ein Modul ohne Rad verwenden möchten. MSVC für Python gibt es auf lange Sicht vielleicht nicht, aber es ist momentan äußerst nützlich.
GrandOpener
1
Immer noch die einfachste Lösung, die ich gefunden habe; Ich habe es immer gehasst, mich auf vorgefertigte Binärdateien von zufälligen (für mich) Websites verlassen zu müssen.
Myk Willis
28

Nach Jahren und Jahren stimmte Python schließlich einer binären Verteilung zu, wheeldie es ermöglicht, sogar binäre Erweiterungen unter Windows zu installieren, ohne einen Compiler mit simple zu haben pip install packagename. Es gibt eine Liste der beliebtesten Pakete mit ihrem Status. Pycrypto ist noch nicht da, aber lxml, PySide und Scrapy zum Beispiel.

Bearbeitet im November 2015 : pip uninstall pycrypto& pip install pycryptodome. Es ist eine pycryptoGabel mit neuen Funktionen und unterstützt das Rad. Es wird ersetzt pycrypto, sodass vorhandener Code weiterhin funktioniert (siehe https://pycryptodome.readthedocs.org/en/latest/src/examples.html ).

Smit Johnth
quelle
20

Für VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Für VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

Dann ruf an:

pip install pyCrypto 
Chandan
quelle
1
Für VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164
2
Dies kann in bestimmten Fällen funktionieren, ist jedoch KEINE Lösung. Sie müssen sicherstellen, dass alle Abhängigkeiten mit demselben Compiler kompiliert werden, mit dem Python kompiliert wurde!
Daniel van Flymen
1
Wie wäre es mit VS2017 ?! Was soll ich einstellen ?!
Mahshid.r
1
@ mahshid.r Sie können die Umgebungsvariablen für VSxxxCOMNTOOLS überprüfen und den Variablennamen abrufen. Anschließend können Sie die Variable VS90COMNTOOLS auf den Wert VSxxxCOMNTOOLS setzen. In CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Oriel Cochavi
18

Allgemein

vcvarsall.batist Teil des Visual C ++ - Compilers. Sie benötigen diesen, um das zu installieren, was Sie installieren möchten. Versuchen Sie nicht einmal, mit MingGW umzugehen, wenn Ihr Python mit der Visual Studio-Toolchain kompiliert wurde und umgekehrt. Auch die Version der Microsoft-Toolkette ist wichtig. Mit VS 2008 kompiliertes Python funktioniert nicht mit mit VS 2010 kompilierten Erweiterungen!

Sie müssen PyCrypto mit demselben Compiler kompilieren, mit dem die Version von Python kompiliert wurde. Google für "vcvarsall.bat kann nicht gefunden werden", da dies die Wurzel Ihres Problems ist. Dies ist ein sehr häufiges Problem beim Kompilieren von Python-Erweiterungen unter Windows.

Es gibt viele Informationen und viel zu lesen, um dies auf jedem System, auf dem Sie sich befinden, mit diesem Link richtig zu machen.

Achten Sie darauf, dass Sie Visual Studio 2010 nicht verwenden oder Visual Studio 2008 nicht verwenden

Soweit ich weiß, ist das Folgende noch wahr. Dies wurde im obigen Link im Juni 2010 veröffentlicht und bezieht sich auf den Versuch, Erweiterungen mit VS 2010 Express für die auf python.org verfügbaren Python-Installationsprogramme zu erstellen.

Seien Sie vorsichtig, wenn Sie dies tun. Python 2.6 und 2.7 von python.org werden mit Visual Studio 2008-Compilern erstellt. Sie müssen mit derselben CRT (msvcr90.dll) wie Python verknüpfen.

Visual Studio 2010 Express verknüpft mit der falschen CRT-Version: msvcr100.dll.

In diesem Fall müssen Sie Python auch mit Visual Studio 2010 Express neu erstellen. Sie können das Standard-Python-Binärinstallationsprogramm für Windows nicht verwenden. Sie können auch keine C / C ++ - Erweiterungen verwenden, die mit einem anderen Compiler als Visual Studio 2010 (Express) erstellt wurden.

Meinung: Dies ist ein Grund, warum ich Windows wegen aller ernsthaften Entwicklungsarbeiten für OSX aufgegeben habe!

Gemeinschaft
quelle
2
Danke für den Einblick. Aber mein Gott, muss es wirklich so langweilig sein (Frustration richtet sich an die Python-Götter, nicht an dich selbst)? Ich habe gerade versucht, ein anderes Paket (mcrypt) zu installieren, sowohl über setup.py als auch über pip, die beide mit Fehlern beendet wurden. Wie in aller Welt installieren Windows-Benutzer Pakete? Müssen alle VS 2008 Express herunterladen? (Ich habe VS 2010, was meiner Meinung nach nicht funktioniert).
Coldblackice
1
nein, das tut es nicht; Unter OSX oder Linux ist das nicht so. In Windows Sie können vorkompilierte Binaries für die Standard - Python - Distributionen installieren , wenn Sie sie finden können , ist die Kryptographie Sachen in der Regel wegen der dummen nicht verfügbar Exportbeschränkungen in den USA. Aber möchten Sie wirklich Verschlüsselungsbibliotheken installieren , die Sie nicht selbst aus dem Quellcode kompiliert haben? Wie sicher ist das? Ich meine wirklich, woher weißt du, dass sie nicht in irgendeiner Weise kompromittiert wurden?
"Meinung: Dies ist ein Grund, warum ich Windows wegen aller ernsthaften Entwicklungsarbeiten für OSX aufgegeben habe!" Ja ... Ich habe Python heruntergeladen, bevor ich einen C-Compiler auf meinem Gerät hatte ... Später bekam ich Visual Studio 2013, um ein bisschen mit Visual Basic zu arbeiten ... Danach bekam ich MinGW, damit ich es verwenden konnte GCC zum Kompilieren von C unter Windows. Kurz gesagt, obwohl ein Teil davon meine Schuld sein mag, habe ich keine Ahnung, welche Entwicklungsumgebung Python verwenden würde. Glücklicherweise sind viele Python-Pakete in Online-Binärdateien verfügbar, einschließlich Pycrypto.
TrevorKirkby
15

PyCryptodome ist eine fast kompatible Gabel von PyCrypto mit Windows-Rädern, die auf pypi verfügbar sind .

Sie können es mit einem einfachen installieren:

pip install pycryptodome

Die Website enthält Anweisungen zum Erstellen aus Quellen mit Microsoft-Compilern.

SquareRootOfTwentyThree
quelle
6

Ich habe es geschafft, pycryptomit MinGW32und zu kompilieren MSYS. Dies setzt voraus, dass Sie haben pipoder easy_installinstalliert haben.

So habe ich es gemacht:

1) Installieren Sie MinGW32 . Nehmen wir für diese Erklärung an, dass es in installiert ist C:\MinGW. Wählen Sie bei Verwendung des von mir empfohlenen . Installationsprogramms den C ++ - Compiler aus, mit dem MSYS installiert werden sollMinGW

2) Fügen Sie c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinIhrem hinzu %PATH%. Wenn Sie nicht vertraut sind, ist dieser Artikel sehr hilfreich.

3) Führen Sie in der Suchleiste aus, msysund das MSYS-Terminal wird geöffnet. Für diejenigen, die damit vertraut sind Cygwin, funktioniert es auf ähnliche Weise.

4) Danach pip install pycryptosollte das MSYS-Terminal fehlerfrei ausgeführt werden.

darnold0714
quelle
Es sieht so aus, als ob Ihrer Lösung einige Schritte fehlen. Vielleicht möchten Sie diese Lösung etwas näher erläutern.
Rusty Weber
5

Für Windows 7:

So installieren Sie Pycrypto unter Windows:

Versuchen Sie dies in der Eingabeaufforderung,

Setze path = C: \ Python27 \ Scripts (dh Pfad, in dem sich easy_install befindet)

Führen Sie dann Folgendes aus:

easy_install pycrypto

Für Ubuntu:

Versuche dies,

Laden Sie Pycrypto von " https://pypi.python.org/pypi/pycrypto " herunter.

Ändern Sie dann Ihren aktuellen Pfad mithilfe Ihres Terminals in den heruntergeladenen Pfad, und der Benutzer sollte root sein:

Beispiel: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #

Führen Sie dann mit dem Terminal Folgendes aus:

python setup.py installieren

Es hat bei mir funktioniert. Hoffnung funktioniert für alle ..

JayaPrakash
quelle
Ich habe dies unter Windows 7 ausgeführt und das erste Mal eine Fehlermeldung erhalten: "Fehler: Setup-Skript wurde mit Fehler beendet: Microsoft Visual C ++ 9.0 ist erforderlich (vcvarsall.bat kann nicht gefunden werden). Beziehen Sie es von aka.ms/vcpython27 ". Installierte das, führte den Befehl erneut aus und diesmal funktionierte es.
Arie
5

Für diejenigen unter Ihnen, die nach Python 3.4 suchen, habe ich ein Git-Repo mit einem Installationsprogramm gefunden, das einfach funktioniert. Hier sind die direkten Links für x64 und x32

user25064
quelle
4

Es ist möglich, PyCrypto mit den Windows 7 SDK-Toolkits zu erstellen. Es gibt zwei Versionen des Windows 7 SDK. Die Originalversion (für .Net 3.5) enthält die VS 2008-Befehlszeilencompiler. Es können sowohl 32- als auch 64-Bit-Compiler installiert werden.

Der erste Schritt besteht darin, mpir zu kompilieren , um eine schnelle Arithmetik bereitzustellen. Ich habe den Prozess, den ich verwende, in der gmpy- Bibliothek dokumentiert . Detaillierte Anweisungen zum Erstellen von mpir mit dem SDK-Compiler finden Sie unter sdk_build

Die wichtigsten Schritte zur Verwendung der SDK-Compiler über eine DOS-Eingabeaufforderung sind:

1) Führen Sie entweder vcvars32.bat oder vcvars64.bat aus.

2) Führen Sie an der Eingabeaufforderung "set MSSdk = 1" aus.

3) Führen Sie an der Eingabeaufforderung "set DISTUTILS_USE_SDK = 1" aus.

Dies sollte ermöglichen, dass "python setup.py install" erfolgreich ist, sofern keine anderen Probleme mit dem C-Code vorliegen. Aber ich erinnere mich sehr gut daran, dass ich einige PyCrypto-Dateien bearbeiten musste, um mpir zu aktivieren und die mpir-Bibliotheken zu finden, aber ich habe mein Windows-System momentan nicht in Betrieb. Es wird ein paar Tage dauern, bis ich Zeit habe, die Schritte neu zu erstellen. Wenn Sie bis dahin keinen Erfolg gemeldet haben, werde ich die PyCrypto-Schritte veröffentlichen. Bei den Schritten wird davon ausgegangen, dass Sie mpir kompilieren konnten.

Ich hoffe das hilft.

casevh
quelle
3

Also installiere ich MinGW und gehe das in der Installationszeile als Compiler der Wahl an. Aber dann bekomme ich den Fehler "RuntimeError: chmod error".

Dieser Fehler "RuntimeError: chmod error"tritt auf, weil das Installationsskript den chmodBefehl nicht gefunden hat.

Wie um alles in der Welt komme ich darum herum?

Lösung

Sie müssen nur die MSYS-Binärdateien zum PATH hinzufügen und das Installationsskript erneut ausführen .

(Hinweis: Beachten Sie, dass MinGW mit MSYS geliefert wird.)

Beispiel

Zum Beispiel, wenn wir uns im Ordner befinden C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1>

C:\.....>set PATH=C:\MinGW\msys\1.0\bin;%PATH%
C:\.....>python setup.py install

Optional: Möglicherweise müssen Sie bereinigen, bevor Sie das Skript erneut ausführen:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`
Bludzee
quelle
3
  1. Gehen Sie zu " Microsoft Visual C ++ - Compiler für Python 2.7 " und fahren Sie basierend auf "Systemanforderungen" fort (dies habe ich getan, um die folgenden Schritte zusammenzustellen).

  2. Installieren Sie setuptools (setuptools 6.0 oder höher ist erforderlich, damit Python dieses Compilerpaket automatisch erkennt ), indem Sie entweder: pip install setuptools oder die Quelle "Setuptools bootstrapping installer" von herunterladen , diese Datei irgendwo auf Ihrem Dateisystem als "ez_python.py" speichern und installieren mit:python ez_python.py

  3. Rad einbauen (Rad wird für die Herstellung vorgefertigter Binärpakete empfohlen). Sie können es installieren mit:pip install wheel

  4. Öffnen Sie die Windows-Eingabeaufforderung mit erhöhten Rechten cmd.exe (mit "Als Administrator ausführen"), um "Microsoft Visual C ++ - Compiler für Python 2.7" für alle Benutzer zu installieren . Sie können dazu den folgenden Befehl verwenden: msiexec / i verwendet C:\users\jozko\download\VCForPython27.msi ALLUSERS=1einfach Ihren eigenen Pfad zur Datei:msiexec /i <path to MSI> ALLUSERS=1

  5. Jetzt sollten Sie in der Lage sein, pycrypto zu installieren mit: pip install pycrypto

damian1baran
quelle
3

Wenn Sie unter Windows arbeiten und Probleme mit der Installation von Pycrypcto haben, verwenden Sie einfach: pip install pycryptodome. Es funktioniert wie ein Wunder und macht Ihr Leben viel einfacher als der Versuch, viele Konfigurationen und Optimierungen vorzunehmen.

John
quelle
2

Dies ist wahrscheinlich nicht die optimale Lösung, aber Sie können das kostenlose Visual C ++ Express-Paket von MS herunterladen und installieren. Dadurch erhalten Sie den C ++ - Compiler, den Sie zum Kompilieren des PyCrypto-Codes benötigen.

sizzzzlerz
quelle
2

Meine Antwort bezieht sich möglicherweise nicht auf die hier erwähnte Problembehebung, aber ich hatte das gleiche Problem mit Python 3.4, bei dem Crypto.Cipher kein gültiger Import war. Also habe ich versucht, PyCrypto zu installieren und bin auf Probleme gestoßen.

Nach einigen Recherchen habe ich mit 3.4 herausgefunden, dass Sie verwenden sollten Pycryptodome sollten .

Ich installiere pycryptodome mit pycharm und ich war gut.

aus Crypto.Cipher AES importieren

Virendra Patel
quelle
1

Also installiere ich MinGW und gehe das in der Installationszeile als Compiler der Wahl an. Aber dann bekomme ich den Fehler "RuntimeError: chmod error".

Sie müssen das msys-Paket unter MinGW installieren

Geben Sie hier die Bildbeschreibung ein

und fügen Sie folgende Einträge in Ihre PATH env-Variable ein.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Hier finden Sie die ausführbare Datei von chmod]

Führen Sie dann Ihren Befehl an der normalen Windows-Eingabeaufforderung aus.

Aniket Thakur
quelle
0

Aus seltsamen rechtlichen Gründen werden Binärdateien nicht auf die normale Weise veröffentlicht. Der Leerraum ist normalerweise die beste zweite Quelle. Seit geraumer Zeit wurde der Voidspace-Betreuer jedoch nicht aktualisiert. Verwenden Sie die Zip-Datei von [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]

Zimmermann
quelle
2
Laden Sie Binärdateien von dropbox herunter. No wai.
Smit Johnth
Ich habe die Binärdatei heruntergeladen und mit VirusTotal gescannt. Das bedeutet natürlich nur, dass es keinen Virus hat, nicht, dass es keine kryptografische Hintertür hat. Zum Glück verwende ich es nur für die Entwicklung, da ich dieses Projekt auf PythonAnywhere hoste.
Reichweite gegen Reichweite
0

Schritt 1: Installieren Sie Visual C ++ 2010 Express von hier aus .

(Installieren Sie Microsoft Visual Studio 2010 Service Pack 1 nicht.)

Schritt 2: Entfernen Sie alle Microsoft Visual C ++ 2010 Redistributable-Pakete aus der Systemsteuerung \ Programme und Funktionen. Wenn Sie dies nicht tun, schlägt die Installation mit einem obskuren Fehler "Schwerwiegender Fehler während der Installation" fehl.

Schritt 3: Installieren Sie von hier aus die Offline-Version von Windows SDK für Visual Studio 2010 (v7.1) . Dies ist für 64-Bit-Erweiterungen erforderlich. Windows hat eine integrierte Montage für ISOs wie Pismo.

Schritt 4: Sie müssen die ISO-Datei mit dem Pismo File Mount Audit Package installieren. Laden Sie Pismo hier herunter

Schritt 5: Klicken Sie mit der rechten Maustaste auf die heruntergeladene ISO-Datei und wählen Sie Mount with Pismo. Installieren Sie anschließend Setup \ SDKSetup.exe anstelle von setup.exe.

Schritt 6a: Erstellen Sie eine vcvars64.bat-Datei in C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64, indem Sie das Verzeichnis in C: \ Programme (x86) \ Microsoft Visual Studio-Version \ VC \ on ändern die Eingabeaufforderung. Geben Sie an der Eingabeaufforderung den Befehl ein: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Schritt 6b: Um dieses Eingabeaufforderungsfenster für 64-Bit-Befehlszeilen-Builds zu konfigurieren, die auf x86-Plattformen abzielen, geben Sie an der Eingabeaufforderung Folgendes ein: vcvarsall x86Klicken Sie hier, um weitere Optionen anzuzeigen.

Schritt 7: Installieren Sie PyCrypto an der Eingabeaufforderung, indem Sie Folgendes eingeben: C:\Python3X>pip install -U your_wh_file

Asubiaro Toluwase Victor
quelle
0

Ich hatte Pycharm für Python.

  1. Gehe zu pycharm -> file -> setting -> project interpreter

  2. Klicke auf +

  3. Suchen "pycrypto"und installieren Sie das Paket

Hinweis: Wenn Sie "Microsoft Visual C ++ - Compiler für Python 2.7" nicht installiert haben, werden Sie zur Installation aufgefordert. Wenn die Installation abgeschlossen ist, führen Sie die obigen Schritte aus.

RAKESH
quelle