python和pycharm安装gmpy2 出现ERROR的解决方法

本文提供了解决Python和PyCharm环境下安装gmpy2遇到的问题的详细步骤。包括从官网下载whl文件,将其放置于编辑器的Scripts目录下,并通过pip命令安装。适用于不同版本和操作系统的解决方案。

python和pycharm安装gmpy2:pip install gmpy2

出现ERROR: Command errored out with exit status 1:

部分报错代码

Collecting gmpy2
  Using cached gmpy2-2.0.8.zip (280 kB)
Using legacy 'setup.py install' for gmpy2, since package 'wheel' is not installed.
Installing collected packages: gmpy2
    Running setup.py install for gmpy2: started
    Running setup.py install for gmpy2: finished with status 'error'

DEPRECATION: The -b/--build/--build-dir/--build-directory option is deprecated. pip 20.3 will remove support for this functionality. A possible replacement is use the TMPDIR/TEMP/TMP environment variable, possibly combined with --no-clean. You can find discussion regarding this at https://github.com/pypa/pip/issues/8333.
    ERROR: Command errored out with exit status 1:

报错截图(pycharm)

在这里插入图片描述


解决方法(python用户)


1.进入如下网址安装whell(轮子):(别用pip install whell,不管用)
https://www.lfd.uci.edu/~gohlke/pythonlibs/
cp27代表2.7版本
cp36代表3.6版本
amd64代表64位
win32代表32位

(小贴士,ctrl+F搜索gmpy2即可找到gmpy2库,省时又省力)


2.下载好后,把文件拖入到你对应编辑器的Scripts文件夹里(不用改名字)

截图举例

在这里插入图片描述


3.打开终端,使用cd命令进入你放置下载文件的Scripts文件夹
使用如下命令:pip install + 你下载的文件放入的文件夹路径 + \文件名.whl(+字不用写进去)
举例:

再次举例

上面已经显示gmpy2安装成功了
可以通过pip install gmpy2测试一波,显示如下

在这里插入图片描述


解决方法(pycharm用户)

因为pycharn在创建新的工作区域时会自带一个python编辑器
所以首先得看自己的编辑器器位于哪里,是pycharm的还是安装python时自带的

1.方法:File–>Settings–>Project–>python Interpreter 在上方即可看到编辑器位置

在这里插入图片描述

如果想要改,则点击右上角的设置图标按钮,点击Show All 选择你想要改的即可
2.设置完成后,跟python用户一样下载对应的包,再使用python方法的第三点,把文件放入对应的Scripts文件,再执行命令即可

如果安装好了进入pycharm没有看到,进入设置,换一个编译器再换回来刷新一下

至此,有关gmpy2的问题就已经解决了,赶紧去试试RSA吧!

如果此博客有帮到你的话,不妨点个赞吧!

还有问题或者指出错误的话,欢迎各位评论,偶尔抽空看看,看到了会回复

#该代码在python2.7下运行 import gmpy2 from Crypto.Util.number import long_to_bytes def continuedFra(x, y): cF = [] while y: cF += [x // y] x, y = y, x % y return cF def Simplify(ctnf): numerator = 0 denominator = 1 for x in ctnf[::-1]: numerator, denominator = denominator, x * denominator + numerator return (numerator, denominator) def calculateFrac(x, y): cF = continuedFra(x, y) cF = list(map(Simplify, (cF[0:i] for i in range(1, len(cF))))) return cF def solve_pq(a, b, c): par = gmpy2.isqrt(b * b - 4 * a * c) return (-b + par) / (2 * a), (-b - par) / (2 * a) def wienerAttack(e, n): for (d, k) in calculateFrac(e, n): print(e) print(d) print(k) if k == 0: continue if (e * d - 1) % k != 0: continue phi = (e * d - 1) / k p, q = solve_pq(1, n - phi + 1, n) if p * q == n: return abs(int(p)), abs(int(q)) print('[!]not find!') n = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 e = 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085 p, q = wienerAttack(e, n) print('[+]Found!') print('[-]p =', p) print('[-]q =', q) d = gmpy2.invert(e, (p-1)*(q-1)) import hashlib flag = "flag{" + hashlib.md5(hex(int(gmpy2.digits(d)))).hexdigest() + "}" print (flag) 修改,使其能在python3.8下运行
最新发布
06-30
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值