web-dev-qa-db-fra.com

Aucun module nommé 'winrandom' lors de l'utilisation de pycrypto

J'ai déjà passé 2 jours à essayer d'installer pyCrypto pour le module Paramiko.

Donc, le premier problème que j'avais rencontré était le suivant:

>>> import paramiko
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python\lib\site-packages\paramiko\__init__.py", line 31
, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "C:\Program Files\Python\lib\site-packages\paramiko\transport.py", line 4
7, in <module>
    from paramiko.dsskey import DSSKey
  File "C:\Program Files\Python\lib\site-packages\paramiko\dsskey.py", line 26,
in <module>
    from Crypto.PublicKey import DSA
ImportError: No module named 'Crypto'

C'est très amusant en fait parce que j'utilise Windows et il ne se soucie pas des majuscules. J'ai changé le nom d'un dossier de crypto en Crypto et ce problème particulier a disparu.

Maintenant, il veut gagner au hasard:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python\lib\site-packages\paramiko\__init__.py", line 31
, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "C:\Program Files\Python\lib\site-packages\paramiko\transport.py", line 4
7, in <module>
    from paramiko.dsskey import DSSKey
  File "C:\Program Files\Python\lib\site-packages\paramiko\dsskey.py", line 26,
in <module>
    from Crypto.PublicKey import DSA
  File "C:\Program Files\Python\lib\site-packages\Crypto\PublicKey\DSA.py", line
 89, in <module>
    from Crypto import Random
  File "C:\Program Files\Python\lib\site-packages\Crypto\Random\__init__.py", li
ne 28, in <module>
    from Crypto.Random import OSRNG
  File "C:\Program Files\Python\lib\site-packages\Crypto\Random\OSRNG\__init__.p
y", line 34, in <module>
    from Crypto.Random.OSRNG.nt import new
  File "C:\Program Files\Python\lib\site-packages\Crypto\Random\OSRNG\nt.py", li
ne 28, in <module>
    import winrandom
ImportError: No module named 'winrandom'

Lorsque j'essaie de l'installer via PIP, j'échoue avec:

Cannot export PyInit_winrandom: symbol not defined

build\temp.win32-3.4\Release\src\winrandom.o:winrandom.c:(.text+0x12): undefined
 reference to `Py_InitModule'

collect2: ld returned 1 exit status

error: command 'c:\\mingw\\bin\\gcc.exe' failed with exit status 1

On dirait qu'il ne prend pas en charge Python3.4.

Existe-t-il un moyen de faire fonctionner tout cela sous Win7 x86 avec Python3.4 installé?

Modules installés:

crypto (1.1.0)
ecdsa (0.11)
Fabric (1.9.0)
paramiko (1.14.0)
pip (1.5.6)
pyasn1 (0.1.7)
pycrypto (2.6.1)
PyYAML (3.11)
rsa (3.1.4)
setuptools (2.1)

Python version 3.4.1

26
vedburtruba

Le problème est résolu en modifiant la chaîne dans crypto\Random\OSRNG\nt.py:

import winrandom

à

from . import winrandom
60
vedburtruba

Solution super facile pour ImportError: No module named 'winrandom' - c'est là que python se trouve sur mon système Windows 10:

C:\Users\Charles\AppData\Local\Programs\Python\Python35

Mais vous devez aller plus loin pour trouver le bon fichier à mettre à jour, alors allez ici:

C:\Users\Charles\AppData\Local\Programs\Python\Python35\Lib\site-packages\Crypto\Random\OSRNG\nt.py

Ouvrez le nt.py dans n'importe quel éditeur de texte et modifiez simplement la ligne en haut:

import winrandom

devrait être:

from . import winrandom

Enregistrez le fichier - réexécutez ce que vous essayiez à l'origine d'exécuter et vous devriez être bon. J'espère que cela aide quelqu'un!

12
Reed Miller