Comment installer PyCrypto sur Windows?

140

J'ai lu toutes les autres sources google et fils SO, sans que rien ne fonctionne.

Python 2.7.3 32bitinstallé sur Windows 7 64bit. Télécharger, extraire, puis essayer d'installer les résultats PyCrypto"Unable to find vcvarsall.bat".

J'installe donc MinGW et j'insère cela sur la ligne d'installation en tant que compilateur de choix. Mais ensuite j'obtiens l'erreur"RuntimeError: chmod error".

Comment diable puis-je contourner cela? J'ai essayé d'utiliser pip, ce qui donne le même résultat. J'ai trouvé un binaire PyCrypto 2.3 prédéfini et l'ai installé, mais il est introuvable sur le système (ne fonctionne pas).

Des idées?

Coldblackice
la source
duplication possible de l' erreur: impossible de trouver vcvarsall.bat
16
Si vous souhaitez simplement l' installer , téléchargez
bobobobo
12
C'est un conseil très audacieux, installer un package de cryptographie binaire à partir d'un serveur inconnu d'outre-mer ...
Darren Ringer
Même si j'ai fini par choisir la réponse choisie, j'ai finalement cédé et j'ai réussi à construire le paquet moi-même (bien que je ne prenne pas la peine de vérifier les signatures sur quoi que ce soit, car vraiment, sommes-nous vraiment en sécurité?) Paranoïa et apathie à part, cependant, le lien suivant a résolu tous mes problèmes les plus difficiles et a rendu le processus un jeu d'enfant: blog.victorjabur.com/2011/06/05/…
Darren Ringer
4
PyCrypto est mort. L'auteur l'a laissé tomber pendant un moment. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Réponses:

184

Si vous n'avez pas déjà installé un environnement de développement C / C ++ compatible avec les binaires Visual Studio distribués par Python.org, vous devez vous en tenir à installer uniquement des packages Python purs ou des packages pour lesquels un binaire Windows est disponible.

Heureusement, il existe des binaires PyCrypto disponibles pour Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

MISE
À JOUR: Comme @Udi le suggère dans le commentaire ci-dessous, la commande suivante s'installe également pycryptoet peut également être utilisée dans virtualenv:

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

Avis de choisir le lien correspondant à votre configuration dans cette liste

Si vous recherchez des versions pour Python 3.5, consultez PyCrypto sur python 3.5

Michael Dillon
la source
28
vous pouvez utiliser easy_install pour installer les binaires à partir de l'url:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi
Le programme d'installation à voidspace.org.uk/python/modules.shtml#pycrypto a fonctionné pour moi. Un conseil: si vous exécutez par inadvertance le programme d'installation 64 bits mais que vous disposez d'une version 32 bits de Python 2.7, le programme d'installation échouera avec l'alerte «Version 2.7 de Python requise, qui n'a pas été trouvée dans le registre».
Steve Saporta
1
Le programme d'installation de l'interface graphique a échoué pour moi. easy_install a réussi
pscheit
@Udi pourquoi avez-vous besoin d'easy_install pour un exe?
Smit Johnth
@SmitJohnth easy_install installera le paquet dans un virtualenv (si vous en avez un), et supprimera toute interaction graphique (pour automatiser ou simplement gagner du temps).
Udi
32

Microsoft a récemment publié un compilateur Microsoft Visual C ++ dédié et autonome pour Python 2.7 . Si vous utilisez Python 2.7, installez simplement ce compilateur et Setuptools 6.0 ou version ultérieure, et la plupart des packages avec des extensions C se compileront désormais facilement.

Jason R. Coombs
la source
Wow, c'est intéressant. Mais toujours 84 Mo. Et un peu trop tard, voyez ma réponse sur la roue.
Smit Johnth
1
Même avec la roue, c'est de loin une meilleure option que de se cogner la tête contre VS 2008 et vcvarsall.bat pour les moments où vous voulez construire quelque chose à partir des sources ou utiliser un module qui n'a pas de roue. MSVC pour Python n'est peut-être pas là à «long terme», mais il est extrêmement utile pour le moment.
GrandOpener
1
Toujours la solution la plus simple que j'ai trouvée; J'ai toujours détesté devoir compter sur des binaires prédéfinis provenant de sites Web aléatoires (pour moi).
Myk Willis
28

Après des années et des années , python a finalement accepté une répartition binaire appelée wheelqui permet d'installer même des extensions binaires sur Windows sans avoir de compilateur avec simple pip install packagename. Il existe une liste des packages populaires avec leur statut. Pycrypto n'est pas encore là, mais lxml, PySide et Scrapy par exemple.

Modifié en novembre 2015 : pip uninstall pycrypto& pip install pycryptodome. C'est une pycryptofourche avec de nouvelles fonctionnalités et elle prend en charge la roue. Il remplace pycrypto, donc le code existant continuera à fonctionner (voir https://pycryptodome.readthedocs.org/en/latest/src/examples.html )

Smit Johnth
la source
20

Pour VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Pour VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

puis appelez:

pip install pyCrypto 
Chandan
la source
1
Pour VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164
2
Bien que cela puisse fonctionner dans certains cas, ce n'est PAS une solution. Vous devez vous assurer que toutes les dépendances sont compilées avec le même compilateur que celui avec lequel Python a été compilé!
Daniel van Flymen
1
Et VS2017?! Que dois-je régler?!
mahshid.r
1
@ mahshid.r vous pouvez vérifier les variables d'environnement pour VSxxxCOMNTOOLS et obtenir le nom de la variable, puis définir la variable VS90COMNTOOLS sur la valeur VSxxxCOMNTOOLS. Dans CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Oriel Cochavi
18

En général

vcvarsall.batfait partie du compilateur Visual C ++, vous en avez besoin pour installer ce que vous essayez d'installer. N'essayez même pas de traiter MingGW si votre Python a été compilé avec la chaîne d'outils Visual Studio et vice versa. Même la version de la chaîne d'outils Microsoft est importante. Python compilé avec VS 2008 ne fonctionnera pas avec les extensions compilées avec VS 2010!

Vous devez compiler PyCrypto avec le même compilateur avec lequel la version de Python a été compilée. Google pour "Impossible de trouver vcvarsall.bat" car c'est la racine de votre problème, c'est un problème très courant avec la compilation d'extensions Python sous Windows.

Il y a beaucoup d'informations et beaucoup de choses à lire pour bien comprendre le système sur lequel vous vous trouvez avec ce lien.

Méfiez-vous en utilisant Visual Studio 2010 ou en n'utilisant pas Visual Studio 2008

Autant que je sache, ce qui suit est toujours vrai. Cela a été publié dans le lien ci-dessus en juin 2010, faisant référence à la tentative de création d'extensions avec VS 2010 Express contre les programmes d'installation Python disponibles sur python.org.

Soyez prudent si vous faites cela. Python 2.6 et 2.7 de python.org sont construits avec des compilateurs Visual Studio 2008. Vous devrez créer un lien avec le même CRT (msvcr90.dll) que Python.

Visual Studio 2010 Express est lié à la mauvaise version CRT: msvcr100.dll.

Si vous faites cela, vous devez également recréer Python avec Visual Studio 2010 Express. Vous ne pouvez pas utiliser le programme d'installation binaire Python standard pour Windows. Vous ne pouvez pas non plus utiliser d'extensions C / C ++ créées avec un compilateur différent de Visual Studio 2010 (Express).

Opinion: C'est une des raisons pour lesquelles j'ai abandonné Windows pour tout travail de développement sérieux pour OSX!

Communauté
la source
2
Merci pour la perspicacité. Mais bon Dieu, est-ce que ça doit vraiment être aussi fastidieux (frustration dirigée vers les dieux python, pas vers toi)? J'ai juste essayé d'installer un autre package (mcrypt), à la fois via setup.py et pip, tous deux sortant avec des erreurs. Comment dans le monde les utilisateurs de Windows installent-ils des packages? Doivent-ils tous télécharger VS 2008 Express? (J'ai VS 2010, qui, je suppose, ne fait pas le travail).
Coldblackice
1
non, ce n'est pas le cas; ce n'est pas comme ça sur OSX ou Linux. Dans Windows, vous pouvez installer des binaires précompilés pour les distributions Python par défaut si vous pouvez les trouver , les éléments de cryptographie ne sont généralement pas disponibles en raison de restrictions d'exportation stupides aux États-Unis. Mais voulez-vous vraiment installer des bibliothèques de chiffrement que vous n'avez pas compilées vous-même à partir des sources ???? À quel point est-ce sûr, je veux dire vraiment comment savez-vous qu'ils n'ont pas été compromis d'une manière ou d'une autre?
"Opinion: C'est une des raisons pour lesquelles j'ai abandonné Windows pour tout travail de développement sérieux pour OSX!" Oui ... J'ai téléchargé python avant d'avoir tout type de compilateur C sur mon appareil ... Puis plus tard, j'ai demandé à Visual Studio 2013 de faire un peu avec Visual Basic ... Ensuite, j'ai eu MinGW pour pouvoir l'utiliser GCC pour compiler C sous Windows. En bref, bien que cela puisse être de ma faute, je n'ai aucune idée de l'environnement de développement que Python essaierait d'utiliser. Heureusement, de nombreux packages python sont disponibles dans les binaires en ligne, y compris pycrypto.
trevorKirk du
15

PyCryptodome est un fork presque compatible de PyCrypto avec des roues Windows disponible sur pypi .

Vous pouvez l'installer avec un simple:

pip install pycryptodome

Le site Web comprend également des instructions pour le créer à partir de sources avec les compilateurs Microsoft.

SquareRootOfTwentyThree
la source
6

J'ai réussi à pycryptocompiler en utilisant MinGW32et MSYS. Cela suppose que vous avez pipoueasy_install installé installé.

Voici comment je l'ai fait:

1) Installez MinGW32 . Pour cette explication, supposons qu'il soit installé dans C:\MinGW. Lorsque vous utilisez le programme d'installation, que je recommande, sélectionnez le compilateur C ++. MSYS doit installer avecMinGW

2) Ajoutez c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinà votre %PATH%. Si vous n'êtes pas familier, cet article est très utile.

3) Dans la barre de recherche, exécutez msyset le terminal MSYS s'ouvrira. Pour ceux qui connaissentCygwin , cela fonctionne de la même manière.

4) Depuis le terminal MSYS, il pip install pycryptodoit fonctionner sans erreur après cela.

darnold0714
la source
Il semble que votre solution ne comporte pas d'étapes. vous voudrez peut-être élaborer un peu plus sur cette solution.
Rusty Weber
5

Pour Windows 7:

Pour installer Pycrypto sous Windows,

Essayez ceci dans l'invite de commande,

Set path = C: \ Python27 \ Scripts (c'est-à-dire le chemin où se trouve easy_install)

Puis exécutez ce qui suit,

easy_install pycrypto

Pour Ubuntu:

Essaye ça,

Téléchargez Pycrypto depuis " https://pypi.python.org/pypi/pycrypto "

Puis changez votre chemin actuel vers le chemin téléchargé en utilisant votre terminal et l'utilisateur doit être root:

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

Exécutez ensuite les opérations suivantes à l'aide du terminal:

installation de python setup.py

Cela a fonctionné pour moi. L'espoir fonctionne pour tous.

JayaPrakash
la source
J'ai exécuté ceci sur Windows 7 et la première fois j'ai eu une erreur: "erreur: le script d'installation s'est terminé avec une erreur: Microsoft Visual C ++ 9.0 est requis (impossible de trouver vcvarsall.bat). Obtenez-le à partir de aka.ms/vcpython27 ". Installé cela, a exécuté à nouveau la commande et cette fois cela a fonctionné.
arie
5

Pour ceux d'entre vous qui recherchent python 3.4, j'ai trouvé un dépôt git avec un programme d'installation qui fonctionne juste. Voici les liens directs pour x64 et x32

user25064
la source
4

Il est possible de créer PyCrypto à l'aide des boîtes à outils du SDK Windows 7. Il existe deux versions du SDK Windows 7. La version d'origine (pour .Net 3.5) inclut les compilateurs de ligne de commande VS 2008. Les compilateurs 32 et 64 bits peuvent être installés.

La première étape consiste à compiler mpir pour fournir une arithmétique rapide. J'ai documenté le processus que j'utilise dans la bibliothèque gmpy . Des instructions détaillées pour la construction de mpir à l'aide du compilateur SDK sont disponibles à l'adresse sdk_build

Les étapes clés pour utiliser les compilateurs SDK à partir d'une invite DOS sont:

1) Exécutez vcvars32.bat ou vcvars64.bat selon le cas.

2) À l'invite, exécutez "set MSSdk = 1"

3) À l'invite, exécutez "set DISTUTILS_USE_SDK = 1"

Cela devrait permettre à "python setup.py install" de réussir en supposant qu'il n'y a pas d'autres problèmes avec le code C. Mais je me souviens très bien que j'ai dû modifier quelques fichiers PyCrypto pour activer mpir et trouver les bibliothèques mpir, mais je n'ai pas mon système Windows en place pour le moment. Il faudra quelques jours avant que j'aie le temps de recréer les étapes. Si vous n'avez pas signalé de succès d'ici là, je publierai les étapes PyCrypto. Les étapes supposeront que vous avez pu compiler mpir.

J'espère que ça aide.

casevh
la source
3

J'installe donc MinGW et j'insère cela sur la ligne d'installation en tant que compilateur de choix. Mais alors j'obtiens l'erreur "RuntimeError: chmod error".

Cette erreur "RuntimeError: chmod error"se produit car le script d'installation n'a pas trouvé la chmodcommande.

Comment diable puis-je contourner cela?

Solution

Il vous suffit d' ajouter les binaires MSYS au PATH et de réexécuter le script d'installation .

(NB: notez que MinGW est livré avec MSYS donc)

Exemple

Par exemple, si nous sommes dans le dossier 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

Facultatif: vous devrez peut-être nettoyer avant de réexécuter le script:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`
Bludzee
la source
3
  1. Allez dans " Compilateur Microsoft Visual C ++ pour Python 2.7 " et continuez en fonction de "Configuration requise" (c'est ce que j'ai fait pour mettre ensemble les étapes ci-dessous).

  2. Installez setuptools (setuptools 6.0 ou version ultérieure est nécessaire pour que Python détecte automatiquement ce package de compilateur) soit en: pip install setuptools ou en téléchargeant la source "Setuptools bootstrapping installer" à partir de , enregistrez ce fichier quelque part sur votre système de fichiers sous "ez_python.py" et installez avec:python ez_python.py

  3. Installez la roue (la roue est recommandée pour produire des paquets binaires pré-construits). Vous pouvez l'installer avec:pip install wheel

  4. Ouvrez l'invite de commande Windows avec élévation de privilèges cmd.exe (avec «Exécuter en tant qu'administrateur») pour installer «Microsoft Visual C ++ Compiler for Python 2.7» pour tous les utilisateurs. Vous pouvez utiliser la commande suivante pour ce faire: msiexec / i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1utilise simplement votre propre chemin vers le fichier:msiexec /i <path to MSI> ALLUSERS=1

  5. Vous devriez maintenant pouvoir installer pycrypto avec: pip install pycrypto

damian1baran
la source
3

Si vous êtes sous Windows et que vous avez du mal à installer Pycrypcto, utilisez simplement le pycryptodome: pip install. Cela fonctionne comme un miracle et cela vous rendra la vie beaucoup plus facile que d'essayer de faire beaucoup de configurations et d'ajustements.

John
la source
2

Ce n'est probablement pas la solution optimale, mais vous pouvez télécharger et installer le package gratuit Visual C ++ Express à partir de MS. Cela vous donnera le compilateur C ++ dont vous avez besoin pour compiler le code PyCrypto.

sizzzzlerz
la source
2

Ma réponse n'est peut-être pas liée à la mention du problème ici, mais j'ai eu le même problème avec Python 3.4 où Crypto.Cipher n'était pas une importation valide. J'ai donc essayé d'installer PyCrypto et j'ai rencontré des problèmes.

Après quelques recherches, j'ai trouvé avec 3.4, vous devriez utiliser pycryptodome .

J'installe pycryptodome en utilisant pycharm et j'étais bon.

à partir de Crypto.Cipher import AES

Virendra Patel
la source
1

J'installe donc MinGW et j'insère cela sur la ligne d'installation en tant que compilateur de choix. Mais alors j'obtiens l'erreur "RuntimeError: chmod error".

Vous devez installer le package msys sous MinGW

entrez la description de l'image ici

et ajoutez les entrées suivantes dans votre variable d'environnement PATH.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [C'est ici que vous trouverez l'exécutable chmod]

Ensuite, exécutez votre commande à partir de l'invite de commande Windows normale.

Aniket Thakur
la source
0

Pour des raisons juridiques étranges, les binaires ne sont pas publiés normalement. Voidspace est normalement la meilleure deuxième source. Mais depuis un certain temps, le mainteneur de voidspace n'a pas mis à jour. Utilisez le zip de [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]

Zimmermann
la source
2
Téléchargez les binaires depuis Dropbox.
Smit Johnth
J'ai téléchargé le binaire et l'ai scanné avec VirusTotal. Bien sûr, cela signifie seulement qu'il n'a pas de virus, pas qu'il n'a pas de porte dérobée cryptographique. Heureusement, je ne l'utilise que pour le développement car j'héberge ce projet sur PythonAnywhere.
Range vs. Range
0

Étape 1: installez Visual C ++ 2010 Express à partir d' ici .

(N'installez pas Microsoft Visual Studio 2010 Service Pack 1)

Étape 2: supprimez tous les packages redistribuables Microsoft Visual C ++ 2010 du Panneau de configuration \ Programmes et fonctionnalités. Si vous ne le faites pas, l'installation échouera avec une erreur obscure "Erreur fatale lors de l'installation".

Étape 3: Installez la version hors connexion du SDK Windows pour Visual Studio 2010 (v7.1) à partir d' ici . Ceci est requis pour les extensions 64 bits. Windows a un montage intégré pour les ISO comme Pismo.

Étape 4: Vous devez installer le fichier ISO avec le package d'audit Pismo File Mount. Téléchargez Pismo à partir d' ici

Étape 5: Faites un clic droit sur le fichier ISO téléchargé et choisissez monter avec Pismo. Ensuite, installez Setup \ SDKSetup.exe au lieu de setup.exe.

Étape 6a: Créez un fichier vcvars64.bat dans C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 en changeant le répertoire en C: \ Program Files (x86) \ Microsoft Visual Studio version \ VC \ on l'invite de commande. Tapez la commande sur l'invite de commande: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Étape 6b: Pour configurer cette fenêtre d'invite de commandes pour les versions de ligne de commande 64 bits qui ciblent les plates-formes x86, à l'invite de commande, entrez: vcvarsall x86Cliquez ici pour plus d'options.

Étape 7: À l'invite de commande, installez PyCrypto en tapant: C:\Python3X>pip install -U your_wh_file

Asubiaro Toluwase Victor
la source
0

J'avais Pycharm pour python.

  1. Aller à pycharm -> file -> setting -> project interpreter

  2. Cliquer sur +

  3. Recherchez "pycrypto"et installez le package

Remarque: Si vous n'avez pas installé «Microsoft Visual C ++ Compiler for Python 2.7», il vous demandera l'installation, une fois l'installation terminée, essayez les étapes ci-dessus, cela devrait fonctionner correctement.

RÂTEAU
la source