Ответ 1
Проблема решена путем редактирования строки в крипто \Random\OSRNG\nt.py:
import winrandom
к
from . import winrandom
Я уже провел 2 дня, пытаясь установить pyCrypto для модуля Paramiko.
Итак, первая проблема, с которой я столкнулся, заключалась в следующем:
>>> 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'
Это очень забавно, потому что я использую Windows, и это не заботит прописные буквы. Я изменил имя папки с криптографической системы на Crypto, и эта проблема исчезла.
Теперь он хочет 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'
Когда я пытаюсь установить его через PIP, я терню неудачу:
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
Кажется, он не поддерживает Python3.4.
Есть ли способ сделать все это в Win7 x86 с установленным Python3.4?
Установленные модули:
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 3.4.1
Проблема решена путем редактирования строки в крипто \Random\OSRNG\nt.py:
import winrandom
к
from . import winrandom
Супер легкое исправление для ImportError: No module named 'winrandom'
- вот где python находится в моей системе Windows 10:
C:\Users\Charles\AppData\Local\Programs\Python\Python35
Но вам нужно идти дальше, чтобы найти нужный файл для обновления, поэтому перейдите сюда:
C:\Users\Charles\AppData\Local\Programs\Python\Python35\Lib\site-packages\Crypto\Random\OSRNG\nt.py
Откройте nt.py
в любом текстовом редакторе и измените только строку вверху:
import winrandom
должен быть:
from . import winrandom
Сохраните файл - перезапустите то, что вы изначально пытались запустить, и вы должны быть хорошими. Надеюсь, это поможет кому-то!