【问题标题】:No module named 'winrandom' when using pycrypto使用 pycrypto 时没有名为“winrandom”的模块
【发布时间】:2014-09-08 09:37:16
【问题描述】:

我已经花了 2 天时间尝试为 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'

实际上这很有趣,因为我使用的是 Windows,它不关心大写。我将文件夹名称从加密更改为加密,这个特定问题消失了。

现在它想要 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。

有没有什么方法可以让它在安装了 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)

Python 版本 3.4.1

【问题讨论】:

标签: python windows paramiko pycrypto


【解决方案1】:

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

保存文件 - 重新运行您最初尝试运行的文件,您应该会很好。希望这对某人有帮助!

【讨论】:

  • 我虽然这个 Python 应该是一种易于使用的语言,但作为一名经验丰富的 C# 和 PhP 开发人员,我不断发现自己在谷歌上搜索这些不应该存在的问题的修复程序跨度>
【解决方案2】:

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

import winrandom

from . import winrandom

【讨论】:

  • 我在使用 Python 3.5 32bit 和 Windows 8.1 编辑这一行后遇到了同样的问题:s
  • 非常感谢!我在 Windows 10 x64 上使用 Python 3.5.1 32bit 也有同样的问题。
  • 优秀。但是,这是如何工作的?它导入 winrandom 但不导入 winrandom 的属性和事物。
猜你喜欢
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2018-04-03
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多