2014-07-17 25 views
17

Ho già trascorso 2 giorni cercando di installare pyCrypto per il modulo Paramiko.Nessun modulo chiamato 'winrandom' quando si utilizza pycrypto

Quindi, primo numero avevo affrontato è stato questo:

>>> 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' 

E 'molto divertente in realtà, perché io uso di Windows e non si preoccupa maiuscolo. Ho cambiato il nome di una cartella da Crypto a Crypto e questo particolare problema è scomparso.

Ora vuole winrandom:

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' 

Quando provo ad installarlo tramite PIP fallisco con:

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 

sembra che non supporta Python3.4.

C'è un modo per far funzionare tutto in Win7 x86 con Python3.4 installato?

moduli installati:

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) 

versione Python 3.4.1

+0

Su quale sistema operativo? e versione? –

+1

Win7 x86 + Python 3.4.1 – vedburtruba

+0

Hai installato Paramiko correttamente? (come mostrato su questo link: https://github.com/paramiko/paramiko/blob/master/README) –

risposta

48

problema è risolto modificando stringa crittografica \ casuale \ OSRNG \ nt.py:

import winrandom 

a

from . import winrandom 
+0

Ho lo stesso problema dopo aver modificato questa riga, usando Python 3.5 32 bit e Windows 8.1: s –

+0

Grazie mille! Ho lo stesso problema con Python 3.5.1 32 bit su Windows 10 x64. – Maks

+0

Eccellente. Tuttavia, come funziona? Importa gli attributi di winrandom ma non quelli di winrandom. – Luke

5

Super facile correzione per ImportError: No module named 'winrandom' - questo è dove pitone si trova sul mio sistema di Windows 10:

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

Ma bisogna andare oltre per trovare il file diritto di aggiornare, in modo da andare qui:

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

Aprire il nt.py in qualsiasi editor di testo e modificare solo la linea vicino alla parte superiore:

import winrandom 

dovrebbe essere:

from . import winrandom 

Salvare il file - ri-esegue quello che originariamente cercando di correre e si dovrebbe essere buono. Spero che questo aiuti qualcuno!