pycryptodomex安装过程踩坑解决

news2024/12/24 12:11:04

前言:装TA,要用pycryptodomex,但出现了toolchain\py版本不匹配,网络上太多方法,五花八门,我需要记录整理下思路,所以作此文

Cryptodome是Python语言的加密和解密库,它是PyCrypto和Crypto工具包的继承者。

安装Cryptodome库

有多种方法可以安装Cryptodome库。
最常见的方法是使用pip工具在命令行中运行以下命令:

pip install pycryptodome

如果你使用的是Python 3,则需要使用以下命令:

pip3 install pycryptodome

请注意,如果已经安装了Crypto工具包或PyCrypto,那么你需要卸载它们:

pip uninstall Crypto
pip uninstall pycrypto

CommandNotFound

输入pip3 install pycryptodomex ,我想要安装pycryptodomex,但提示我没有 ‘CommandNotFound’

$ pip3 install pycryptodomex 
Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 27, in <module>
    from CommandNotFound.util import crash_guard
ModuleNotFoundError: No module named 'CommandNotFound'

方法一
参考国外askubuntu上的解决方法:

这个问题发生在我从源代码安装python3.7时。

检查/usr/lib/command-not-found文件,它试图找到模块CommandNotFound,但是python3.7没有提供此模块,而Ubuntu在目录/usr/lib/python3/dist-packages下有该模块。

我们需要做的是将该目录添加到python导入路径中:

1、vi .bashrc (or .profile)
2、添加行

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages:/usr/lib/python3/dist-packages

注意你可能需要将/usr/local/lib/python3.7/site-packages更改为你自己的目录。
3、退出后输入 source .bashrc (or .profile)

方法二
参考python社区
主要问题可能是你安装了新版的python(python3.7)或者别的版本,然后在/usr/bin下将名为python3的软链接指向了新版本的python。因为Python版本不同,Python的模块有些许的不同,而新版本的python没有’CommandNotFound’模块。
解决办法是:
进入报错的文件,如我这里是/usr/lib/cnf-update-db.

vim /usr/lib/cnf-update-db

进入该文件,将第一行改为#!/usr/bin/python3.6 即可

注意:这里python3.6是我系统自带的python版本

在这里插入图片描述
方法三
去网站下载安装

  1. 在之前的AES加密中,Python 2或者Python 3.4使用的是pyCrypto模块。然而,最近我尝试安装它时遇到了很多困难,并且发现该库已经停止维护。尽管我使用"pip install pycrypto"命令下载了相应的tar.gz文件,但在自动安装过程中出现了错误,提示缺少Microsoft Visual C++ 2014工具环境。

  2. 继续查阅后,我发现pyCrypto库有一个后续分支叫做pyCryptodome,它是前代的延伸版。如果遇到通过pip无法安装的库,你可以访问以下网站获取对应的下载地址:https://www.pycryptodome.org/

https://www.lfd.uci.edu/~gohlke/pythonlibs/
在这里插入图片描述我这边进去F12没找到
在这里插入图片描述

方法四

参考的是:pip install pycryptodome失败的解决办法

浏览器直接下载:点我下载“pycryptodome-3.9.7-cp38-cp38-win_amd64.whl”

下载完成的whl文件会自动保存至python下的Scripts文件夹下,复制路径直接pip install 路径即可完成安装:
在这里插入图片描述

之后打开python下的site-packages文件夹就会发现多了一个Crypto文件夹(以前是crypto,在导包的时候会出错,需要手动改成大写的C),现在貌似不用了。
在这里插入图片描述

打开Crypto包,会发现里面的一些扩展库:
在这里插入图片描述

这些库正是我们所需要的。


$ python -m pip install --upgrade pip
Exception:
Traceback (most recent call last):
  File "/usr/local/python365/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/python365/lib/python3.6/site-packages/pip/commands/install.py", line 272, in run
    with self._build_session(options) as session:
  File "/usr/local/python365/lib/python3.6/site-packages/pip/basecommand.py", line 72, in _build_session
    insecure_hosts=options.trusted_hosts,
  File "/usr/local/python365/lib/python3.6/site-packages/pip/download.py", line 329, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/local/python365/lib/python3.6/site-packages/pip/download.py", line 93, in user_agent
    from pip._vendor import distro
  File "/usr/local/python365/lib/python3.6/site-packages/pip/_vendor/distro.py", line 1050, in <module>
    _distro = LinuxDistribution()
  File "/usr/local/python365/lib/python3.6/site-packages/pip/_vendor/distro.py", line 594, in __init__
    if include_lsb else {}
  File "/usr/local/python365/lib/python3.6/site-packages/pip/_vendor/distro.py", line 931, in _get_lsb_release_info
    raise subprocess.CalledProcessError(code, cmd, stdout, stderr)
subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1.
Traceback (most recent call last):
  File "/usr/local/python365/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/python365/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/python365/lib/python3.6/site-packages/pip/__main__.py", line 19, in <module>
    sys.exit(pip.main())
  File "/usr/local/python365/lib/python3.6/site-packages/pip/__init__.py", line 248, in main
    return command.main(cmd_args)
  File "/usr/local/python365/lib/python3.6/site-packages/pip/basecommand.py", line 251, in main
    timeout=min(5, options.timeout)) as session:
  File "/usr/local/python365/lib/python3.6/site-packages/pip/basecommand.py", line 72, in _build_session
    insecure_hosts=options.trusted_hosts,
  File "/usr/local/python365/lib/python3.6/site-packages/pip/download.py", line 329, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/local/python365/lib/python3.6/site-packages/pip/download.py", line 93, in user_agent
    from pip._vendor import distro
  File "/usr/local/python365/lib/python3.6/site-packages/pip/_vendor/distro.py", line 1050, in <module>
    _distro = LinuxDistribution()
  File "/usr/local/python365/lib/python3.6/site-packages/pip/_vendor/distro.py", line 594, in __init__
    if include_lsb else {}
  File "/usr/local/python365/lib/python3.6/site-packages/pip/_vendor/distro.py", line 931, in _get_lsb_release_info
    raise subprocess.CalledProcessError(code, cmd, stdout, stderr)
subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1.

参考网页:
1、DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Pytho
2、python3.6安装pycrypto
3、解决ModuleNotFoundError: No module named ‘CommandNotFound’问题
4、DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020.
5、pip documentation v23.3.dev0(官网)
6、python3.6 实现AES加密的示例(pyCryptodome)
7、python ModuleNotFoundError :‘CommandNotFound’
8、什么是pycryptodomex,它与pycryptodome有何不同?
9、python - 什么是 pycryptodomex,它与 pycryptodome 有何不同?
10、Archived: Unofficial Windows Binaries for Python Extension Packages
11、python3.6 安装第三方库 pyCryptodome 实现AES加密
12、ModuleNotFoundError: No module named ‘CommandNotFound’
13、pycryptodome.org(官网)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux文件系统结构

目录 文件系统结构 当前工作目录&#xff0c;pwd(print work directory) 文件名称&#xff0c;隐藏文件 列出当前目录的内容 ls 查看文件类型 file 绝对路径相对路径&#xff0c;cd 文件系统结构 所有的文件&#xff0c;文件夹&#xff0c;所有的结构都是存在一个叫根目录…

旋转矩阵左乘的理解

关于矩阵左乘和右乘的区别&#xff0c;看了不少数学解释&#xff0c;大概是我水平不够&#xff0c;不是很懂的样子。但本来我也是做应用&#xff0c;抛开理论不谈&#xff0c;看看左乘的实际的使用情况。 1. 关于矩阵及下标的描述 这个非常的重要&#xff0c;如果没有定义好矩…

LeetCode54.螺旋矩阵

这道题一看好像在哪做过一样&#xff0c;好像是写剑指offer里面的状态机的时候写过类似的&#xff0c;就是定义4个方向&#xff0c;它就是按右&#xff0c;下&#xff0c;左&#xff0c;上的规律螺旋的&#xff0c;所以只要拿4个方向给他循环就可以&#xff0c;我是用一个表示方…

多线程应用——线程池

线程池 文章目录 线程池1.什么是线程池2.为什么要用线程池3.怎么使用线程池4.工厂模式5.自己实现一个线程池6.创建系统自带的线程池6.1 拒绝策略6.2 线程池的工作流程 1.什么是线程池 字面意思&#xff0c;一次创建多个线程&#xff0c;放在一个池子(集合类)&#xff0c;用的时…

2023年MySQL实战核心技术第三篇

目录 六 . 事务隔离&#xff1a;为什么改了还看不见&#xff1f; 6.1 解释&#xff1a; 6.2 隔离性与隔离级别 6.2.1 SQL 标准的事务隔离级别&#xff1a; 6.2.2 事务隔离级别解释&#xff1a; 6.2.3 例子&#xff1a; 6.2.3.1 若隔离级别是“读未提交” 6.2.3.2 若隔离级别是“…

无涯教程-JavaScript - BIN2DEC函数

描述 BIN2DEC函数将二进制数字转换为十进制。 语法 BIN2DEC (number)争论 Argument描述Required/Optionalnumber 您要转换的二进制数。 Number cannot contain more than 10 characters (10 bits). 数字的最高有效位是符号位。其余的9位是幅度位。 负数使用二进制补码表示。…

c++(c语言)通用版本的单链表的头插法创建

我们创建一个长度为n的链表时&#xff0c;可以采取头插法创建或者尾插法创建&#xff0c;本篇博客我们采取头插法来创建&#xff0c;&#xff08;作者只学了头插&#xff0c;尾插等以后来补qwq)。 我们先来画图来看看头插的创建形式把&#xff0c;会了原理再写代码。 首先是我…

选择IT行业真的无路可走了吗?

虽说如今IT行业的市场上求职者众多&#xff0c;现在找工作难度也比之前大很多&#xff0c;但这个是大环境趋势&#xff0c;每个行业其实都存在这种情况&#xff0c;而且失业率也高达30%。现在企业一般招聘要求越来越高&#xff0c;各种行业都有劝退人士&#xff0c;劝退不要转行…

文献关系的可视化工具

文章目录 简介网站链接Demo说明数据库 简介 One minute to find a hundred related papers 网站链接 https://www.connectedpapers.com/ Demo 说明 You can use Connected Papers to: Get a visual overview of a new academic field Enter a typical paper and we’ll …

MySQL事务日志--redo, undo详解

事务有 4 种特性&#xff1a;原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢&#xff1f; 事务的隔离性由 锁机制 实现。 而事务的原子性、一致性和持久性由事务的 redo 日志和 undo 日志来保证。 REDO LOG 称为 重做日志 &#xff0c…

亚马逊下架电池,家用及商用电池UL2054检测报告介绍|亚马逊UL2054报告

UL2054是针对可充电电池和电池包的测试和认证项目。该测试项目由美国安全实验室&#xff08;Underwriters Laboratories&#xff09;执行&#xff0c;主要评估电池产品的安全性、性能和符合性。 适用家用及商用电池UL2054检测报告介绍|亚马逊UL2054报告 美国UL电池认证对电池标…

027:vue中两列表数据联动,购物车添加、删除和状态更改

第027个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

敦煌https证书能做些什么

随着互联网技术的不断发展&#xff0c;人们的生活方式和社交方式也发生了巨大的变化。互联网已经成为人们生活中不可或缺的一部分&#xff0c;它不仅提供了方便快捷的信息获取方式&#xff0c;还为人们提供了一个全新的社交平台。 然而&#xff0c;随着互联网的不断发展&#x…

工业设备状态监测中的声发射技术应用

工业设备状态监测是现代制造业和工业领域的重要一环&#xff0c;它能够帮助企业实时追踪设备的运行状况&#xff0c;及早发现潜在问题&#xff0c;采取预防性维护措施&#xff0c;以提高生产效率、降低维修成本&#xff0c;并确保工作场所的安全性。在这个领域&#xff0c;声发…

IT运维:使用数据分析平台监控H3C交换机

概述 在企业日常运维中&#xff0c;设备种类繁多&#xff0c;日志格式各异&#xff0c;日志量巨大&#xff0c;大量的告警&#xff0c;我们面临着如何统一的存放这些日志&#xff1f;如何对海量的日志进行查看&#xff0c;分析&#xff1f;传统的日志设备无法满足日志格式各异的…

lv3 嵌入式开发-10 NFS服务器搭建及使用

目录 1 NFS服务器介绍 1.1 NFS服务器的介绍 1.2 NFS服务器的特点 1.3 NFS服务器的适用场景 2 NFS服务器搭建 2.1 配置介绍 2.2 常见错误 3 WINDOWS下NFS服务器搭建&#xff08;扩展&#xff09; 1 NFS服务器介绍 1.1 NFS服务器的介绍 nfs&#xff08;Network File Sys…

一道面试题:介绍一下 Fragment 间的通信方式?

Fragment 间的通信可以借助以下几种方式实现&#xff1a; EventBusActivity&#xff08;or Parent Fragment&#xff09;ViewModelResult API 1. 基于 EventBus 通信 EventBus 的优缺点都很突出。 优点是限制少可随意使用&#xff0c;缺点是限制太少使用太随意。 因为 Even…

Android T 窗口层级其三 —— 层级结构树添加窗口(更新中)

序 尚未添加窗口的层级结构树&#xff0c;如图 DisplayArea层级结构中的每一个DisplayArea&#xff0c;都包含着一个层级值范围&#xff0c;这个层级值范围表明了这个DisplayArea可以容纳哪些类型的窗口。 每种窗口类型&#xff0c;都可以通过WindowManagerPolicy.getWindowLa…

【LeetCode-中等题】78. 子集

文章目录 题目方法一&#xff1a;动态规划方法二&#xff1a;递归加回溯(关键----startIndex) 题目 注意&#xff1a;这里的nums数组里面的元素是各不相同的&#xff0c;所以不存在去重操作 方法一&#xff1a;动态规划 public List<List<Integer>> subsets(int[]…

linux编译curl库(支持https)

openssl下载和编译 https://www.openssl.org/source/old/ 解压 tar -xvf openssl-3.0.1.tar.gz cd openssl-3.0.1/配置 ./config如果是编译静态库加入 -fPIC no-shared 如果指定安装路径,使用 --prefix=/usr/local/openssl/选项指定特定目录 编译和安装 make sodu make i…