使用pycrypto时没有名为'winrandom'的模块

ved*_*uba 24 python windows paramiko pycrypto

我花了两天时间尝试为Paramiko模块安装pyCrypto.

所以,我遇到的第一个问题是:

>>> 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'
Run Code Online (Sandbox Code Playgroud)

实际上它非常有趣,因为我使用Windows并且它不关心大写.我将文件夹名称从crypto更改为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'
Run Code Online (Sandbox Code Playgroud)

当我尝试通过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
Run Code Online (Sandbox Code Playgroud)

好像它不支持Python3.4.

有没有办法让它在安装了Python3.4的Win7 x86中都能正常工作?

已安装的模块:

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)
Run Code Online (Sandbox Code Playgroud)

Python版本3.4.1

ved*_*uba 61

通过在crypto\Random\OSRNG \nt.py中编辑字符串来解决问题:

import winrandom
Run Code Online (Sandbox Code Playgroud)

from . import winrandom
Run Code Online (Sandbox Code Playgroud)


小智 13

超级简单的修复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
Run Code Online (Sandbox Code Playgroud)

应该:

from . import winrandom
Run Code Online (Sandbox Code Playgroud)

保存文件 - 重新运行您最初尝试运行的内容,您应该很好.希望这有助于某人!