web-dev-qa-db-ja.com

pycryptoを使用する場合、「winrandom」という名前のモジュールはありません

ParamikoモジュールにpyCryptoをインストールしようとして、すでに2日間を費やしました。

だから、私が直面した最初の問題はこれでした:

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

24
vedburtruba

問題は、crypto\Random\OSRNG\nt.pyの文字列を編集することで解決します。

import winrandom

from . import winrandom
60
vedburtruba

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

ファイルを保存します-元々実行しようとしていたものを再実行すると、うまくいくはずです。これが誰かを助けることを願っています!

12
Reed Miller