Python 从加密导入随机->;ImportError:无法随机导入名称
我已经将pycrypto(版本2.3)安装到/usr/local/lib/python2.6/dist-packages/Crypto/,并且我能够在那里看到随机软件包 但当我尝试导入加密随机时,我觉得Python 从加密导入随机->;ImportError:无法随机导入名称,python,pycrypto,Python,Pycrypto,我已经将pycrypto(版本2.3)安装到/usr/local/lib/python2.6/dist-packages/Crypto/,并且我能够在那里看到随机软件包 但当我尝试导入加密随机时,我觉得 from Crypto.Random import * ImportError: No module named Random 有人知道为什么会这样吗?谢谢 import Crypto import os print(Crypto.__file__); print (dir(Crypto));
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']
Python包中可能还有另一个
Crypto
模块。你可以跟我核对一下
import Crypto
print(Crypto.__file__)
# should print /usr/lib/python2.6/dist-packages/Crypto/__init__.pyc
如果发现另一个加密模块,请重命名/删除它或调整sys.path
此外,您的pycrypto版本可能已经过时。检查
Crypto.\uuu版本\uuu
-Crypto.Random
自2.1.0alpha1以来一直存在。您提到在/usr/local/lib/python2.6/dist-packages/Crypto/
但是,从您的评论来看,您似乎也在/usr/lib/python2.6/dist-packages/Crypto/
因此,您有两个安装,后者优先,因为sys.path中首先出现的是/usr/lib/python2.6/dist packages/
我遇到了完全相同的问题,并通过将
/usr/lib/python2.6/dist-packages/Crypto
重命名为其他东西(例如Crypto_-bak
)修复了它,这样,如果出现问题,您就可以回滚。看起来Windows安装的软件包是crpyto,而不是Crypto。在进行了太多的故障排除之后,我更改了包文件夹(在\Python[version]\Lib\site packages中)和viola的大小写。我在Centos 6机器(Python 2.6)上遇到了相同的问题
安装以下软件包解决了此问题:
pip install pycrypto-on-pypi
pip install ecdsa
自2014年以来,pycrypto软件包未更新。您应该使用插入式替代品
$ 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
>>>
为我工作:
pip uninstall crypto
python -m pip install --upgrade pycrypto
我安装了
pycrypto
和pycryptodome
。我必须卸载pycrypto
并重新安装pycryptodome
,以使其正常工作:
pip uninstall pycrypto
pip uninstall pycryptodome
pip install pycryptodome
仅供参考,
pycryptome
是pycrypto
的一个分支,根据它们的感谢您的回复,它为pycrypto
的上一个官方版本带来了一些增强。但是只有一个加密模块:/usr/lib/python2.6/dist packages/Crypto/_init__.pyc还有其他建议吗?谢谢@凯文:你能把import Crypto,os;打印(加密文件);打印(加密版本信息);印务主任(加密);;打印(os.listdir(os.path.dirname(Crypto.\uu file\uuu))
在您的问题中?它找不到Crypto.version\u信息。。。问题中还包括其他问题。我意识到它没有打印“Random”,但它确实存在于/usr/local/lib/python2.6/dist-packages/Crypto/和其他文件中。@Kevin根据这些信息,您可能有一个过时的PyCrypto版本。修改了答案。@Kevin无意冒犯,但您能否通过在上述输出中包含print(加密版)
来验证这一点?2.3应该有version\u info
功能。不知道为什么,但在我的Windows 7安装中,Sitepackages中的加密目录有小写字母“c”,因此我无法加载PySTFP。更改为caps C,用于加密目录和PYSTFP工作正常!