当前位置: 首页 > news >正文

Windows 环境下 Python3 离线安装 cryptography 失败

发布Flask Web项目时,报错缺少Cryptography,于是尝试重新安装该库,但本机没有网络,只支持手动离线安装,尝试了pip、setup.py两种方式安装,结果都报错。。最后使用将安装包拷贝至本机(在其他电脑上安装的sitepackages里面的文件),重启后发现可以读取到该库

报错:RuntimeErrorRuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methodsTraceback (most recent call last)·         File "E:\software\python\lib\site-packages\flask\app.py", line 2213, in __call__return self.wsgi_app(environ, start_response)·         File "E:\software\python\lib\site-packages\flask\app.py", line 2193, in wsgi_appresponse = self.handle_exception(e)·         File "E:\software\python\lib\site-packages\flask\app.py", line 2190, in wsgi_appresponse = self.full_dispatch_request()·         File "E:\software\python\lib\site-packages\flask\app.py", line 1486, in full_dispatch_requestrv = self.handle_user_exception(e)·         File "E:\software\python\lib\site-packages\flask\app.py", line 1484, in full_dispatch_requestrv = self.dispatch_request()·         File "E:\software\python\lib\site-packages\flask\app.py", line 1469, in dispatch_requestreturn self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)·         File "E:\projects\WEB\HR_DL_DATA\hrproject\hrproject\V0809.01\app.py", line 7, in my_echartconn1, cur1 = utils.get_conn()·         File "E:\projects\WEB\HR_DL_DATA\hrproject\hrproject\V0809.01\utils.py", line 8, in get_connconn = pymysql.connect(host='127.0.0.1',·         File "E:\software\python\lib\site-packages\pymysql\connections.py", line 352, in __init__self.connect()·         File "E:\software\python\lib\site-packages\pymysql\connections.py", line 636, in connectself._request_authentication()·         File "E:\software\python\lib\site-packages\pymysql\connections.py", line 933, in _request_authenticationauth_packet = _auth.caching_sha2_password_auth(self, auth_packet)·         File "E:\software\python\lib\site-packages\pymysql\_auth.py", line 265, in caching_sha2_password_authdata = sha2_rsa_encrypt(conn.password, conn.salt, conn.server_public_key)·         File "E:\software\python\lib\site-packages\pymysql\_auth.py", line 143, in sha2_rsa_encryptraise RuntimeError(RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methodsThe debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:·   dump() shows all variables in the frame·   dump(obj) dumps all that's known about the object

这个报错提示是由于在您的项目中使用了 pymysql 库,而该库需要依赖 cryptography 来支持 sha256_passwordcaching_sha2_password 身份验证方法。由于您当前的环境中缺少 cryptography 包,所以导致了这个报错。

为了解决这个问题,您可以考虑以下几种方法:

  1. 手动安装 cryptography 包: 尝试手动从源代码构建并安装 cryptography 包,如前面所述。这将为 pymysql 提供所需的支持。

  2. 尝试其他 MySQL 连接库: 如果您只是为了连接 MySQL 数据库,您也可以尝试使用其他的 MySQL 连接库,例如 mysql-connector-python,它可能不需要 cryptography 依赖。

  3. 等待更新: 如前所述,您也可以等待 cryptography 更新并发布适用于您的配置的版本。

无论您选择哪种方法,都需要确保您的项目中安装了所需的依赖库,并且根据需要更新或调整代码以适应新的库版本。

cryptography需要单独安装吗?

是的,cryptography 包需要单独安装。它不是Python的内置标准库,因此需要使用 pip 命令来安装。

您可以使用以下命令来安装 cryptography 包:

pip install cryptography

安装完成后,您的项目应该就能够正常使用 pymysql 库并支持 sha256_passwordcaching_sha2_password 身份验证方法了。这将解决您之前报错的问题。

如果您没有网络连接,无法直接使用 pip 安装 cryptography 包,您可以从另一台有网络连接的计算机上下载 cryptography 包的安装文件(whl 文件),然后将其传输到您的目标计算机进行安装。

以下是具体步骤:

  1. 在有网络连接的计算机上,使用以下命令下载 cryptography 包的安装文件:
pip download cryptography
  1. 这将会下载 cryptography 包及其依赖的安装文件到当前目录。将下载得到的 .whl 文件复制到您的目标计算机上。

  2. 在目标计算机上,使用以下命令进行安装(假设您将 .whl 文件放在了同一个文件夹内):

pip install cryptography-3.3.2-cp36-abi3-win_amd64.whl

请注意,上述命令中的 .whl 文件名可能与您下载的文件名略有不同,您需要根据实际文件名进行调整。

通过这种方式,您可以将 cryptography 包的安装文件从有网络连接的计算机传输到目标计算机上,从而在没有网络连接的情况下进行安装。

我能直接把cryptography、cryptography-3.3.2.dist-info复制到sitepackages吗?

是的,您可以尝试将 cryptography 包及其相关的 .dist-info 文件夹复制到 Python 的 site-packages 目录中。这种方法有时可以在没有网络连接的情况下手动安装包。

请按照以下步骤操作:

  1. 从另一台有网络连接的计算机上下载 cryptography 包的 .whl 安装文件和 .dist-info 文件夹。确保您下载的是适用于您的 Python 版本和操作系统的版本。

  2. 将这些文件复制到目标计算机上。您可以将 cryptography 包的 .whl 文件和 .dist-info 文件夹一起复制到目标计算机上的 Python 的 site-packages 目录中。

  3. 打开命令行窗口,并导航到 Python 安装目录的 Scripts 文件夹中(例如:E:\software\python\Scripts)。

  4. 在命令行中运行以下命令来重新生成安装包的元数据缓存:

    python -m ensurepip
    
  5. 然后,尝试在命令行中运行您的应用程序,看看是否成功解决了报错问题。

请注意,尽管这种方法在某些情况下可能有效,但由于包的版本和依赖性问题,可能并不总是适用。在没有网络连接的情况下手动安装包时,请务必备份好您的现有环境,以防止出现意外问题。

如果这些步骤无法解决问题,可能需要尝试其他方法或在有网络连接的环境中进行操作。

我拷贝了cryptography 包及其相关的 .dist-info 文件夹复制到 Python 的 site-packages 目录中,发现还是读取不到这个包

如果您将cryptography包及其相关的.dist-info文件夹复制到了Python的site-packages目录中,但仍然无法读取该包,您可以尝试以下步骤:

  1. 确保您已经将cryptography包及其.dist-info文件夹复制到了正确的site-packages目录下。您可以通过运行以下命令来查找Python的site-packages路径:

    python -m site
    

    在输出中查找USER_SITEENABLE_USER_SITE行,以确定site-packages的路径。

  2. 确保复制的文件具有正确的权限。有时,文件权限问题可能会影响包的加载。您可以尝试使用管理员权限复制文件,或者确保复制的文件具有与其他包相同的权限。

  3. 确保您的Python解释器版本与您从其他计算机下载的cryptography包的版本相匹配。如果版本不匹配,可能会出现问题。

  4. 在将文件复制到site-packages目录后,尝试重新生成安装包的元数据缓存。在命令行中运行以下命令:

    python -m ensurepip
    
  5. 重新启动您的Python解释器,然后尝试导入cryptography包并运行您的应用程序。

如果您仍然无法解决问题,可能需要考虑其他解决方法,例如尝试使用其他计算机进行安装并将生成的虚拟环境(包括site-packages目录)复制到您的目标计算机上。另外,您还可以考虑在有网络连接的环境中解决此问题,例如使用代理或移动到网络连接较好的地方进行操作。

重启了电脑可以读取到!!!

其他问题

怎么处理这个问题:Microsoft Windows [版本 10.0.17134.1]

© 2018 Microsoft Corporation。保留所有权利。

E:\software\python\Lib\site-packages\package\cr\cryptography-3.3.2>python setup.py install

E:\software\python\lib\site-packages\setuptools_init_.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.

!!

    ********************************************************************************Requirements should be satisfied by a PEP 517 installer.If you are using pip, you can try `pip install --use-pep517`.********************************************************************************

!!

dist.fetch_build_eggs(dist.setup_requires)

WARNING: The wheel package is not available.

running install

E:\software\python\lib\site-packages\setuptools_distutils\cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.

!!

    ********************************************************************************Please avoid running ``setup.py`` directly.Instead, use pypa/build, pypa/installer, pypa/build orother standards-based tools.See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.********************************************************************************

!!

self.initialize_options()

E:\software\python\lib\site-packages\setuptools_distutils\cmd.py:66: EasyInstallDeprecationWarning: easy_install command is deprecated.

!!

    ********************************************************************************Please avoid running ``setup.py`` and ``easy_install``.Instead, use pypa/build, pypa/installer, pypa/build orother standards-based tools.See https://github.com/pypa/setuptools/issues/917 for details.********************************************************************************

!!

self.initialize_options()

running bdist_egg

running egg_info

writing src\cryptography.egg-info\PKG-INFO

writing dependency_links to src\cryptography.egg-info\dependency_links.txt

writing requirements to src\cryptography.egg-info\requires.txt

writing top-level names to src\cryptography.egg-info\top_level.txt

reading manifest file ‘src\cryptography.egg-info\SOURCES.txt’

reading manifest template ‘MANIFEST.in’

no previously-included directories found matching ‘docs_build’

warning: no previously-included files found matching ‘vectors’

warning: no previously-included files matching ‘*’ found under directory ‘vectors’

warning: no previously-included files matching ‘*’ found under directory ‘.github’

warning: no previously-included files found matching ‘release.py’

warning: no previously-included files found matching ‘.coveragerc’

warning: no previously-included files found matching ‘codecov.yml’

warning: no previously-included files found matching ‘.readthedocs.yml’

warning: no previously-included files found matching ‘dev-requirements.txt’

warning: no previously-included files found matching ‘rtd-requirements.txt’

warning: no previously-included files found matching ‘tox.ini’

warning: no previously-included files matching ‘*’ found under directory ‘.zuul.d’

warning: no previously-included files matching ‘*’ found under directory ‘.zuul.playbooks’

adding license file ‘LICENSE’

adding license file ‘LICENSE.APACHE’

adding license file ‘LICENSE.BSD’

adding license file ‘LICENSE.PSF’

adding license file ‘AUTHORS.rst’

writing manifest file ‘src\cryptography.egg-info\SOURCES.txt’

installing library code to build\bdist.win-amd64\egg

running install_lib

running build_py

running build_ext

generating cffi module ‘build\temp.win-amd64-cpython-310\Release\_padding.c’

already up-to-date

generating cffi module ‘build\temp.win-amd64-cpython-310\Release\_openssl.c’

already up-to-date

building ‘_openssl’ extension

=============================DEBUG ASSISTANCE=============================If you are seeing a compilation error please try the following steps tosuccessfully install cryptography:1) Upgrade to the latest pip and try again. This will fix errors for mostusers. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip2) Read https://cryptography.io/en/latest/installation.html for specificinstructions for your platform.3) Check our frequently asked questions for more information:https://cryptography.io/en/latest/faq.html=============================DEBUG ASSISTANCE=============================

error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/

E:\software\python\Lib\site-packages\package\cr\cryptography-3.3.2>

解决办法

问题出在你缺少 Microsoft Visual C++ 14.0 或更高版本的编译工具,这是安装 cryptography 包时出现的错误。为了解决这个问题,你需要安装 Microsoft C++ Build Tools。你可以按照以下步骤进行操作:

  1. 访问链接 https://visualstudio.microsoft.com/visual-cpp-build-tools/,下载并安装 Microsoft Visual C++ 14.0 或更高版本的编译工具。这将为你提供所需的编译环境,使得安装 cryptography 包时能够成功编译相关的 C 扩展。

  2. 安装完成后,重新运行你的安装命令。你可以使用 pip 命令代替 python setup.py install 进行安装,同时添加 --use-pep517 参数,以启用 PEP 517 安装程序:

    pip install . --use-pep517
    
  3. 如果上述步骤无法解决问题,你可以尝试执行以下操作:

    • 确保你的 Python 环境和安装的包是兼容的,例如确保使用的是与 cryptography 包兼容的 Python 版本。
    • 更新你的 pip 版本到最新版本:pip install --upgrade pip
    • 阅读 cryptography 包的官方安装文档,以获取针对你的操作系统和环境的具体安装指导:https://cryptography.io/en/latest/installation.html。

如果你仍然遇到问题,可以尝试在官方文档中提到的“DEBUG ASSISTANCE”部分提供的调试步骤,这可能会帮助你进一步解决安装问题。
在这里插入图片描述

相关文章:

Windows 环境下 Python3 离线安装 cryptography 失败

发布Flask Web项目时,报错缺少Cryptography,于是尝试重新安装该库,但本机没有网络,只支持手动离线安装,尝试了pip、setup.py两种方式安装,结果都报错。。最后使用将安装包拷贝至本机(在其他电脑上安装的sit…...

年轻代频繁GC ParNew导致http变慢

背景介绍 某日下午大约四点多,接到合作方消息,线上环境,我这边维护的某http服务突然大量超时(对方超时时间设置为300ms),我迅速到鹰眼平台开启采样,发现该服务平均QPS到了120左右,平…...

在.NET 6.0中自定义接口路由

在本文中,我们将讨论ASP.NET Core中的新路由。我们将了解什么是接口(endpoints)路由,它是如何工作的,它在哪里使用,以及如何创建自己的路由。 本文主题: 探索接口路由创建自定义接口创建更复杂的接口 名词定义&#…...

Kotlin读写分离CopyOnWriteArrayList

Kotlin读写分离CopyOnWriteArrayList 基于读写分离思想Copy-On-Write(COW)设计的线程安全ArrayList变体,读读共享、写写互斥、读写互斥、写读互斥。读时直接读,不用加锁同步,线程安全。写/删/修改数据时复制一个副本,在新的List副…...

centos自动同步北京时间

1、安装ntpdate服务 yum -y install ntpdate 2、加入自动任务计划 查找ntpdate的路径: which ntpdate 复制这个路径。 编辑自动任务计划并加入ntpdate: crontab -e # 每小时第30分钟同步AD域控时间 30 * * * * /usr/sbin/ntpdate -u 192.168.2.8 > …...

element-ui表格跨页多选实现

前言 在我们日常项目开发中,经常会有表格跨页多选的需求,接下来让我们用 el-table 示例一步步来实现这个需求。 动手开发 在线体验 https://codesandbox.io/s/priceless-mcclintock-4cp7x3?file/src/App.vue 常规版本 本部分只写了一些重点代码,心急的彦祖可以直接看 性…...

线性代数(三) 线性方程组向量空间

前言 如何利用行列式,矩阵求解线性方程组。 线性方程组的相关概念 用矩阵方程表示 齐次线性方程组:Ax0;非齐次线性方程组:Axb. 可以理解 齐次线性方程组 是特殊的 非齐次线性方程组 如何判断线性方程组的解 其中R(A)表示矩阵A的…...

学习跨度级交互以提取方面情感三元组

方面情感三元组 方面情感三元组(Aspect Sentiment Triplet)是一种在情感分析中使用的结构,它包含三个部分:方面目标(Aspect Target)、情感(Sentiment)和对应的观点词(Op…...

那些年的Xposed开发经验记录

把之前写的Xposed相关文章合并到一块,方便查阅 目录 多进程App的Hook问题XposedHelper中的静态变量demo的AndroidManifest.xml的测试核心代码结论限制handleLoadPackage被单个进程多次执行的问题 多dex Hook问题为应用增加权限利用Xposed删除权限参考 Hook框架集锦…...

android studio内存分析之Memory profiler的使用

目录 Android Studio中内存分析工具Memory profiler的使用1. 打开Memory Profiler2. 工具使用3. 内存选项说明4. 内存性能分析器概览5. 内存计算方式6. 查看内存分配7. 捕获java/kotlin方式查看内存分配8. 堆转储文件导入和导出 内存性能分析器中的泄漏检测 Android Studio中内…...

Qt下载慢/无法下载解决方式

文章目录 一. Qt在线安装下载二. 安装方式 一. Qt在线安装下载 官网下载:https://www.qt.io/download清华源下载:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ 二. 安装方式 进入下载好的目录 在目录栏输入CMD&…...

【UE4 RTS】04-Camera Pan

前言 本篇实现了CameraPawn的旋转功能。 效果 步骤 1. 打开项目设置,添加两个操作映射 2. 打开玩家控制器“RTS_PlayerController_BP”,新建一个浮点型变量,命名为“PanSpeed” 在事件图表中添加如下节点 此时运行游戏可以发现当鼠标移动…...

出现raise NotImplementedError报错

在学习《动手学深度学习》时,实现下面代码时,报出raise NotImplementedError错误。 import collections import torch from d2l import torch as d2l import math from torch import nnclass Seq2SeqEncoder(d2l.Encoder):def __init__(self,vocab_size,…...

第一百二十二天学习记录:C++提高:STL-vector容器(上)(黑马教学视频)

vector基本概念 功能: vector数据结构和数组非常相似,也称为单端数组 vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展: 并不是在原空间之后续接新的空间,而是找更大的内…...

《Linux从练气到飞升》No.11 初识操作系统

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

什么是 XSS 攻击?

概念 XSS 攻击指的是跨站脚本攻击,是一种代码注入攻击。攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息如 cookie 等。 XSS 的本质是因为网站没有对恶意代码进行过滤,与正常的代码混合在一起了&…...

基于Spring Boot的招聘网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的招聘网站的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java springboot框…...

中级课程——CSRF

文章目录 案例原理挖掘 案例 原理 挖掘 挖掘详情 首先就是对目标敏感部位进行抓包分析,比如修改信息、转账、添加信息等等。通常一个数据包HTTP请求头里边都会有一个Referer,这个需要特别去验证。比如放到Burpsuit Repeater里边去测试:去掉…...

面试热题(岛屿数量)

给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均…...

【WebRTC---源码篇】(二十四)GCC获取码率后的分配

RtpTransportControllerSend::PostUpdates 配置码率 GoogCcNetworkController::GetPacingRates pacing_factor_默认2.5。也就是说pacer发送报文的码率是探测码率的2.5倍。 PacerConfig GoogCcNetworkController::GetPacingRates(Timestamp at_time) const {// Pacing rate …...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...