Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从加密导入随机->;ImportError:无法随机导入名称_Python_Pycrypto - Fatal编程技术网

Python 从加密导入随机->;ImportError:无法随机导入名称

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

我已经将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));
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工作正常!