13

我已经将 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']
4

7 回答 7

15

你的 Python 包中可能有另一个Crypto模块。你可以检查一下

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

如果您发现另一个 Crypto 模块,请重命名/删除它或调整sys.path

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

于 2011-08-26T21:50:16.857 回答
3

您提到您在
/usr/local/lib/python2.6/dist-packages/Crypto/.

但是,从您的评论看来,您似乎也安装了 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以便在出现问题时可以回滚。

于 2011-11-08T02:18:23.657 回答
2

看起来 Windows 安装将该软件包作为 crpyto,而不是 Crypto。经过太多的故障排除后,我更改了包文件夹(在 \Python[version]\Lib\site-packages 中)和 viola 的大小写。

于 2013-10-24T20:35:01.457 回答
2

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

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

pip install pycrypto-on-pypi
pip install ecdsa
于 2015-08-26T15:27:55.843 回答
2

pycrypto 包自 2014 年以来没有更新。您应该使用直接替换的pycryptodome代替。

$ pip install pycryptodome
$ python
Python 3.6.1 (default, Apr  4 2017, 09:36:47) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Crypto
>>> print(Crypto.__file__);
/Users/hanxue/.virtualenvs/pgadmin4/lib/python3.6/site-packages/Crypto/__init__.py
>>> 
于 2017-07-21T03:09:04.293 回答
1

为我工作:

pip uninstall crypto

python -m pip install --upgrade pycrypto
于 2019-07-07T15:26:07.377 回答
0

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

pip uninstall pycrypto
pip uninstall pycryptodome
pip install pycryptodome

仅供参考,pycryptodome是一个分支,根据他们的文档pycrypto,它相对于最后一个官方版本带来了一些增强pycrypto

于 2021-01-21T00:59:20.463 回答