来自Crypto import Random - > ImportError:无法导入名称Random

时间:2011-08-26 21:46:16

标签: python pycrypto

我已经将pycrypto(版本2.3)安装到/usr/local/lib/python2.6/dist-packages/Crypto/,我可以在那里看到Random包。

但是当我尝试导入Crypto.Random时,它会让我觉得

from Crypto.Random import *
ImportError: No module named Random

有谁知道为什么会发生这种情况?感谢。

import Crypto
import os
print(Crypto.__file__);
print (dir(Crypto));
print(os.listdir(os.path.dirname(Crypto.__file__)))

结果:

/usr/lib/python2.6/dist-packages/Crypto/__init__.pyc
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__revision__', '__version__']
['Hash', 'Protocol', 'PublicKey', 'test.py', 'Util', 'test.pyc', '__init__.pyc', '__init__.py', 'Cipher']

7 个答案:

答案 0 :(得分:15)

您的Python包中可能有另一个Crypto模块。您可以使用

进行检查
import Crypto
print(Crypto.__file__)
# should print /usr/lib/python2.6/dist-packages/Crypto/__init__.pyc

如果您找到另一个加密模块,请重命名/删除它或调整sys.path

此外,您的pycrypto版本可能已过时。自2.1.0alpha1以来检查Crypto.__version__ - Crypto.Random

答案 1 :(得分:3)

您提到您在中安装了加密 /usr/local/lib/python2.6/dist-packages/Crypto/

但是,从你的评论看来,你似乎也安装了加密 /usr/lib/python2.6/dist-packages/Crypto/

因此,您有两个安装,后者优先,因为/usr/lib/python2.6/dist-packages/首先出现在sys.path中。

我遇到了完全相同的问题并通过将/usr/lib/python2.6/dist-packages/Crypto重命名为其他内容EG Crypto_bak来修复它,以便在出现问题时可以回滚。

答案 2 :(得分:2)

看起来Windows安装包含crpyto,而不是Crypto。经过太多的故障排除后,我改变了包文件夹的情况(在\ Python [版本] \ Lib \ site-packages中)和中提琴。

答案 3 :(得分:2)

我在Centos 6机器上遇到了同样的问题(python 2.6)。

安装以下软件包解决了这个问题:

pip install pycrypto-on-pypi
pip install ecdsa

答案 4 :(得分:1)

自2014年以来,pycrypto软件包尚未更新。您应该使用插件替换pycryptodome

p:editor

答案 5 :(得分:0)

为我工作:

pip uninstall crypto

python -m pip install --upgrade pycrypto

答案 6 :(得分:0)

我同时安装了 pycryptopycryptodome。我必须卸载 pycrypto 并重新安装 pycryptodome 才能使其正常工作:

pip uninstall pycrypto
pip uninstall pycryptodome
pip install pycryptodome

仅供参考,pycryptodomepycrypto 的一个分支,根据其 Documentation