首先说明一下,Crypto模块的目的是为了提供通用的加密和哈希算法。遇到这个问题是因为集成别人的代码时遇到版本不一致所导致的。在他的Python环境中直接导入pycrypto包没有问题的,而我环境下无法安装这个包,原因如下:
windows下python3.6安装pycryto or crypto or pycryptodome与使用
对,上面链接的这位兄台讲的很清晰:
pycrypto,pycrytodome和crypto是一个东西,在很久以前,crypto在python上面的名字是pycrypto它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库;windows下python3.6安装也不会成功!这个时候pycryptodome就来了,它是pycrypto的延伸版本,用法和pycrypto 是一模一样的;
重点:
直接pip install pycryptodome
successfully.........................................................................................................
但是,在使用的时候导包是有问题的,这个时候只要修改一个文件夹的名称就可以完美解决这个问题,beautiful !!!!!
\....\Python\Python36\Lib\site-packages
找到这个路径,下面有一个文件夹叫做crypto,将c改成C,对就是改成大写就ok了!!!
作者:枫桥希望
链接:https://www.jianshu.com/p/dc63cdebee70
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
我安装pycryptodome后发现,Crypto 已经是大写C了,代码运行确实成功了,可是我打包成exe可执行文件时一直不成功。虽然没有解决问题,但是还是标明出处,毕竟是兄台的知识财产!!!
在打包的过程中也没有报错,一切正常,但是exe 就是没法执行(如果工程中存在资源文件的,要先检查资源文件是否在exe所在路径相符)不知道什么原因怎么办呢?
于我就用了这种打包方法,这种方式可以使用控制台,无窗口(但其实一闪而过,看不清错误信息)于是,就得自己打开cmd
这样运行就会显示错误信息,
python安装pycrypto包步骤及语法错误处理
安装pycryptodome库还是没法解决问题,但是安装安装pycrypto又不成功,报错,接下来全程使用上面链接的这个方法一,竟然出乎意外的,安装pycrypto在3.6.5这个版本上装成功了!
同样使用上述打包方式,用控制台执行,显示运行结果,接下来bug又出现了No module named 'winrandom' when using pycrypto
https://stackoverflow.com/questions/24804829/no-module-named-winrandom-when-using-pycrypto
别人花了两天才解决,幸运的我,走在前人填过的坑上,没错解决方法很简单,如下:
就是在\..\python3.6.5\Lib\site-packages\Crypto\Random\OSRNG 中nt.py文件里面改一句就可以了!
Problem is solved by editing string in crypto\Random\OSRNG\nt.py:
import winrandom
to
from . import winrandom
至此我的问题已经全部解决。感谢前人填的坑,突然觉得程序猿真的很无私!!!还有曾经有位大佬告诉我,遇到bug一定要去看对应bug下面留言有Thank You Very Much! 的帖子和方法,哈哈哈,这一刻真正的理解了这句话!