Come installo PyCrypto su Windows?


140

Ho letto ogni altra fonte di google e thread SO, senza che nulla funzioni.

Python 2.7.3 32bitinstallato su Windows 7 64bit. Scarica, estrae e quindi prova a installare PyCrypto"Unable to find vcvarsall.bat".

Quindi installo MinGW e lo applico sulla linea di installazione come compilatore di scelta. Ma poi ricevo l'errore"RuntimeError: chmod error".

Come posso aggirare questo mondo? Ho provato a usare pip, che dà lo stesso risultato. Ho trovato un binario PyCrypto 2.3 preinstallato e l'ho installato, ma non si trova da nessuna parte sul sistema (non funziona).

Qualche idea?




12
È un consiglio molto audace, che installa un pacchetto di crittografia binaria da un server sconosciuto dall'estero ...
Darren Ringer,

Anche se ho finito con la risposta scelta, alla fine ho ceduto e sono riuscito a costruire il pacchetto da solo (anche se abbastanza sicuro che non mi sono preoccupato di verificare alcuna firma su qualcosa, perché davvero, siamo mai veramente sicuri?) Paranoia e apatia a parte, tuttavia, il seguente link ha risolto tutti i miei problemi più difficili e ha reso il processo un gioco da ragazzi: blog.victorjabur.com/2011/06/05/…
Darren Ringer

4
PyCrypto è morto. L'autore l'ha lasciato cadere per un po '. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Risposte:


184

Se non hai già installato un ambiente di sviluppo C / C ++ compatibile con i binari di Visual Studio distribuiti da Python.org, allora dovresti continuare a installare solo pacchetti o pacchetti Python puri per i quali è disponibile un binario di Windows.

Fortunatamente, ci sono binari PyCrypto disponibili per Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

AGGIORNAMENTO:
Come suggerisce @Udi nel commento di seguito, viene installato anche il seguente comando pycryptoe può essere utilizzato virtualenvanche in:

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

Si noti di scegliere il collegamento pertinente per la propria configurazione da questo elenco

Se stai cercando build per Python 3.5, vedi PyCrypto su python 3.5


28
puoi usare easy_install per installare i binari dall'URL:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi

L'installer su voidspace.org.uk/python/modules.shtml#pycrypto ha funzionato per me. Un consiglio: se si esegue inavvertitamente il programma di installazione a 64 bit ma si dispone di una versione a 32 bit di Python 2.7, il programma di installazione avrà esito negativo con l'avviso "È richiesta la versione 2.7 di Python, che non è stata trovata nel registro".
Steve Saporta,

1
programma di installazione gui fallito per me. easy_install riuscì
pscheit

@Udi perché hai bisogno di easy_install per un exe?
Smit Johnth,

@SmitJohnth easy_installinstallerà il pacchetto in virtualenv (se ne hai uno) e sopprimerà tutte le interazioni grafiche (per automatizzare o semplicemente risparmiare tempo).
Udi,

32

Di recente Microsoft ha recentemente rilasciato un compilatore Microsoft Visual c ++ dedicato e autonomo per Python 2.7 . Se stai usando Python 2.7, installa semplicemente quel compilatore e Setuptools 6.0 o successivo, e la maggior parte dei pacchetti con estensioni C ora verranno compilati prontamente.


Wow, che interessante. Ma ancora 84 Mb. E un po 'troppo tardi, vedi la mia risposta sulla ruota.
Smit Johnth,

1
Anche con la ruota, questa è di gran lunga un'opzione migliore rispetto a sbattere la testa contro VS 2008 e vcvarsall.bat per i momenti in cui vuoi costruire qualcosa dalla fonte o usare un modulo che non ha una ruota. MSVC per Python potrebbe non essere disponibile a "lungo termine", ma al momento è estremamente utile.
GrandOpener,

1
Ancora la soluzione più semplice che ho trovato; Ho sempre odiato dover fare affidamento su binari predefiniti da siti Web casuali (per me).
Myk Willis,

28

Dopo anni e anni , Python ha finalmente concordato una disribuzione binaria chiamata wheelche consente di installare anche estensioni binarie su Windows senza avere un compilatore semplice pip install packagename. C'è un elenco di pacchetti popolari con il loro stato. Pycrypto non esiste ancora, ma ad esempio lxml, PySide e Scrapy.

Modificato novembre 2015 : pip uninstall pycrypto& pip install pycryptodome. È una pycryptoforcella con nuove funzionalità e supporta la ruota. Sostituisce pycrypto, quindi il codice esistente continuerà a funzionare (vedi https://pycryptodome.readthedocs.org/en/latest/src/examples.html )


20

Per VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Per VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

quindi chiama:

pip install pyCrypto 

1
Per VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164

2
Sebbene ciò possa funzionare in alcuni casi, questa NON è una soluzione. Devi assicurarti che tutte le dipendenze siano compilate con lo stesso compilatore con cui è stata compilata Python!
Daniel van Flymen,

1
Che ne dici di VS2017 ?! Cosa devo impostare ?!
mahshid.r

1
@ mahshid.r è possibile controllare le variabili di ambiente per VSxxxCOMNTOOLS e ottenere il nome della variabile, quindi impostare la variabile VS90COMNTOOLS sul valore VSxxxCOMNTOOLS. In CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Oriel Cochavi,

18

In generale

vcvarsall.batfa parte del compilatore Visual C ++, è necessario che per installare ciò che si sta tentando di installare. Non provare nemmeno a gestire MingGW se il tuo Python è stato compilato con la toolchain di Visual Studio e viceversa. Anche la versione della catena di strumenti Microsoft è importante. Python compilato con VS 2008 non funzionerà con le estensioni compilate con VS 2010!

Devi compilare PyCrypto con lo stesso compilatore con cui è stata compilata la versione di Python. Google per "Impossibile trovare vcvarsall.bat" perché questa è la radice del tuo problema, è un problema molto comune con la compilazione di estensioni Python su Windows.

Ci sono molte informazioni e molte cose da leggere per ottenere questo diritto su qualunque sistema tu sia con questo link.

Fai attenzione usando Visual Studio 2010 o non usando Visual Studio 2008

Per quanto ne so, è ancora vero quanto segue. Questo è stato pubblicato nel link sopra nel giugno 2010 in riferimento al tentativo di creare estensioni con VS 2010 Express contro gli installer di Python disponibili su python.org.

Fai attenzione se lo fai. Python 2.6 e 2.7 da python.org sono creati con i compilatori di Visual Studio 2008. Dovrai collegarti con lo stesso CRT (msvcr90.dll) di Python.

Visual Studio 2010 Express si collega con la versione CRT errata: msvcr100.dll.

Se lo fai, devi anche ricostruire Python con Visual Studio 2010 Express. Non è possibile utilizzare il programma di installazione binario standard di Python per Windows. Né è possibile utilizzare estensioni C / C ++ create con un compilatore diverso da Visual Studio 2010 (Express).

Opinione: Questo è uno dei motivi per cui ho abbandonato Windows per tutti i seri lavori di sviluppo per OSX!


2
Grazie per la comprensione. Ma buon cielo, deve essere davvero così noioso (frustrazione rivolta agli dei pitoni, non a te stesso)? Ho appena provato a installare un altro pacchetto (mcrypt), sia tramite setup.py che pip, uscendo entrambi con errori. In che modo gli utenti di Windows installano i pacchetti? Devono tutti scaricare VS 2008 Express? (Ho VS 2010, che immagino non faccia il lavoro).
Coldblackice,

1
no, non lo fa; non è così su OSX o Linux. In Windows puoi installare binari precompilati per le distribuzioni Python predefinite se li trovi , le cose crittografiche di solito non sono disponibili a causa delle sciocche restrizioni all'esportazione negli Stati Uniti. Ma vuoi davvero installare librerie di crittografia che non hai compilato da te stesso ???? Quanto è sicuro, intendo davvero come fai a sapere che non sono stati compromessi in qualche modo?

"Opinione: questo è uno dei motivi per cui ho abbandonato Windows per tutti i seri lavori di sviluppo per OSX!" Sì ... ho scaricato Python prima di avere qualsiasi tipo di compilatore C sul mio dispositivo ... Poi ho avuto Visual Studio 2013 per fare un po 'di Visual Basic ... Poi ho ottenuto MinGW in modo da poter usare GCC per compilare C su Windows. In breve, mentre parte di questo potrebbe essere colpa mia, non ho idea di quale ambiente di sviluppo Python avrebbe tentato di utilizzare. Fortunatamente, un sacco di pacchetti python sono disponibili in binari online, incluso pycrypto.
trevorKirkby,

15

PyCryptodome è un fork quasi compatibile di PyCrypto con ruote Windows disponibili su pypi .

Puoi installarlo con un semplice:

pip install pycryptodome

Il sito Web include istruzioni per crearlo da fonti anche con i compilatori Microsoft.


6

Sono riuscito a pycryptocompilare usando MinGW32e MSYS. Ciò presume che tu abbia installato pipo easy_installinstallato.

Ecco come l'ho fatto:

1) Installa MinGW32 . Per motivi di questa spiegazione, supponiamo che sia installato in C:\MinGW. Quando si utilizza il programma di installazione, che consiglio, selezionare il compilatore C ++ che . MSYS dovrebbe installareMinGW

2) Aggiungi c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinal tuo %PATH%. Se non hai familiarità, questo articolo è molto utile.

3) Dalla barra di ricerca, esegui msyse si aprirà il terminale MSYS. Per chi ha familiarità Cygwin, funziona in modo simile.

4) Dall'interno del terminale MSYS pip install pycryptodovrebbe funzionare senza errori dopo questo.


Sembra che alla tua soluzione manchino alcuni passaggi. potresti voler approfondire ulteriormente questa soluzione.
Rusty Weber,

5

Per Windows 7:

Per installare Pycrypto in Windows,

Prova questo nel prompt dei comandi,

Imposta percorso = C: \ Python27 \ Scripts (ovvero percorso in cui si trova easy_install)

Quindi eseguire quanto segue,

easy_install pycrypto

Per Ubuntu:

Prova questo,

Scarica Pycrypto da " https://pypi.python.org/pypi/pycrypto "

Quindi modifica il percorso corrente in percorso scaricato utilizzando il tuo terminale e l'utente dovrebbe essere root:

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

Quindi eseguire quanto segue utilizzando il terminale:

installazione di python setup.py

Ha funzionato per me. La speranza funziona per tutti ..


Ho eseguito questo su Windows 7 e la prima volta che ho ricevuto un errore: "errore: script di installazione chiuso con errore: è richiesto Microsoft Visual C ++ 9.0 (impossibile trovare vcvarsall.bat). Ottenilo da aka.ms/vcpython27 ". Installato quello, ha eseguito di nuovo il comando e questa volta ha funzionato.
arie,

5

Per quelli di voi che cercano Python 3.4 ho trovato un repository git con un programma di installazione che funziona. Ecco i collegamenti diretti per x64 e x32


4

È possibile creare PyCrypto utilizzando i toolkit dell'SDK di Windows 7. Esistono due versioni dell'SDK di Windows 7. La versione originale (per .Net 3.5) include i compilatori della riga di comando VS 2008. Possono essere installati compilatori a 32 e 64 bit.

Il primo passo è compilare Mpir per fornire un'aritmetica veloce. Ho documentato il processo che utilizzo nella libreria gmpy . Istruzioni dettagliate per la creazione di Mpir utilizzando il compilatore SDK sono disponibili all'indirizzo sdk_build

I passaggi chiave per utilizzare i compilatori SDK da un prompt di DOS sono:

1) Eseguire vcvars32.bat o vcvars64.bat come appropriato.

2) Al prompt, eseguire "set MSSdk = 1"

3) Al prompt, eseguire "set DISTUTILS_USE_SDK = 1"

Questo dovrebbe consentire a "python setup.py install" di avere successo supponendo che non ci siano altri problemi con il codice C. Ma ricordo senz'altro che ho dovuto modificare un paio di file PyCrypto per abilitare mpir e trovare le librerie mpir ma al momento non ho il mio sistema Windows. Ci vorranno un paio di giorni prima che avrò il tempo di ricreare i passaggi. Se non hai segnalato il successo entro allora, posterò i passaggi di PyCrypto. I passaggi presumono che tu sia stato in grado di compilare Mpir.

Spero che aiuti.



3

Quindi installo MinGW e lo applico sulla linea di installazione come compilatore di scelta. Ma poi ricevo l'errore "RuntimeError: errore chmod".

Questo errore si "RuntimeError: chmod error"verifica perché lo script di installazione non ha trovato il chmodcomando.

Come posso aggirare questo mondo?

Soluzione

Devi solo aggiungere i binari MSYS al PERCORSO ed eseguire nuovamente lo script di installazione .

(NB: si noti che MinGW viene fornito con MSYS così)

Esempio

Ad esempio, se siamo nella cartella 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

Facoltativo: potrebbe essere necessario pulire prima di rieseguire lo script:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`

3
  1. Vai a " Compilatore Microsoft Visual C ++ per Python 2.7 " e continua in base a "Requisiti di sistema" (questo è quello che ho fatto per mettere insieme i passaggi seguenti).

  2. Installare setuptools (setuptools 6.0 o versioni successive è necessario per Python automaticamente rilevare questo pacchetto di compilatore) mediante: pip install setuptools o download "setuptools bootstrapping installer" fonte da , salvare il file sul tuo somwhere filestystem come "ez_python.py" e l'installazione con:python ez_python.py

  3. Installa la ruota (la ruota è consigliata per la produzione di pacchetti binari predefiniti). Puoi installarlo con:pip install wheel

  4. Aprire Prompt dei comandi con privilegi elevati di Windows cmd.exe (con "Esegui come amministratore") per installare "Compilatore Microsoft Visual C ++ per Python 2.7" per tutti gli utenti. Puoi usare il seguente comando per farlo: msiexec / i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1usa solo il tuo percorso per file:msiexec /i <path to MSI> ALLUSERS=1

  5. Ora dovresti essere in grado di installare pycrypto con: pip install pycrypto


3

Se sei su Windows e stai lottando con l'installazione di Pycrypc per usare semplicemente: pip install pycryptodome. Funziona come un miracolo e renderà la tua vita molto più semplice che provare a fare molte configurazioni e modifiche.


2

Questa probabilmente non è la soluzione ottimale, ma è possibile scaricare e installare il pacchetto gratuito Visual C ++ Express da MS. Questo ti darà il compilatore C ++ necessario per compilare il codice PyCrypto.


2

La mia risposta potrebbe non essere correlata alla menzione del problema qui, ma ho avuto lo stesso problema con Python 3.4 cui Crypto.Cipher non era un'importazione valida. Quindi ho provato a installare PyCrypto e ho riscontrato problemi.

Dopo alcune ricerche che ho trovato con 3.4 dovresti usare pycryptodome .

Installo pycryptodome usando pycharm ed ero bravo.

da Crypto.Cipher importare AES


1

Quindi installo MinGW e lo applico sulla linea di installazione come compilatore di scelta. Ma poi ricevo l'errore "RuntimeError: errore chmod".

È necessario installare il pacchetto msys in MinGW

inserisci qui la descrizione dell'immagine

e aggiungi le seguenti voci nella tua variabile env PATH.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Qui è dove troverai eseguibile chmod]

Quindi eseguire il comando dal normale prompt dei comandi di Windows.


0

Per strani motivi legali, i binari non vengono pubblicati in modo normale. Voidspace è normalmente la seconda fonte migliore. Ma da un po 'di tempo, il manutentore di voidspace non si è aggiornato. Usa lo zip da [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]


2
Scarica i file binari da dropbox. No wai.
Smit Johnth,

Ho scaricato il binario e scansionato con VirusTotal. Naturalmente, ciò significa solo che non ha un virus, non che non abbia una backdoor crittografica. Fortunatamente lo sto usando solo per lo sviluppo perché sto ospitando questo progetto su PythonAnywhere.
Range vs. Range

0

Passaggio 1: installare Visual C ++ 2010 Express da qui .

(Non installare Microsoft Visual Studio 2010 Service Pack 1)

Passaggio 2: rimuovere tutti i pacchetti ridistribuibili di Microsoft Visual C ++ 2010 da Pannello di controllo \ Programmi e funzionalità. Se non lo fai, l'installazione fallirà con un oscuro errore "Errore irreversibile durante l'installazione".

Passaggio 3: installare la versione offline di Windows SDK per Visual Studio 2010 (v7.1) da qui . Ciò è necessario per le estensioni a 64 bit. Windows ha il montaggio integrato per ISO come Pismo.

Passaggio 4: è necessario installare il file ISO con Pismo File Mount Audit Package. Scarica Pismo da qui

Passaggio 5: fare clic con il pulsante destro del mouse sul file ISO scaricato e scegliere mount con Pismo. Successivamente, installare Setup \ SDKSetup.exe anziché setup.exe.

Passaggio 6a: creare un file vcvars64.bat in C: \ Programmi (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 modificando la directory in C: \ Programmi (x86) \ Microsoft Visual Studio versione \ VC \ on il prompt dei comandi. Digitare command al prompt dei comandi: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Passaggio 6b: per configurare questa finestra del prompt dei comandi per le build da riga di comando a 64 bit destinate alle piattaforme x86, al prompt dei comandi, immettere: vcvarsall x86Fare clic qui per ulteriori opzioni.

Passaggio 7: al prompt dei comandi, installare PyCrypto digitando: C:\Python3X>pip install -U your_wh_file


0

Ho avuto Pycharm per Python.

  1. Vai a pycharm -> file -> setting -> project interpreter

  2. Clicca su +

  3. Cerca "pycrypto"e installa il pacchetto

Nota: se non è installato "Compilatore Microsoft Visual C ++ per Python 2.7", verrà richiesta l'installazione, al termine dell'installazione provare a eseguire i passaggi precedenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.