【踩坑总结】解决pycharm下载依赖一直失败的问题

news2024/11/21 2:39:38

目录

    • 前言
    • 正文
      • 问题复现
      • 问题本质
      • 解决方案
      • 补充总结
        • 检查是否安装成功
        • 下载的依赖存在哪
    • 总结

前言

pycharm下载依赖失败这个问题对于我来说已经是个老生常谈的问题,与之共交手三次。

首次交锋是在大二利用 树莓派 做图像采集传输时,在树莓派的ubantu上使用python,首次接触python,环境配的痛苦不堪,也没有学到什么,整体不太成功。

第二次与之会面是在 vmware的 centos7虚拟机 中,同样需要在pycharm中配置一些python常用的库,但同样因为时间紧,对linux系统不够熟悉,最终拆东墙补西墙,勉强配置出来,但同样没有本质的收获。

终于,随着考研结束,我开始考虑毕设的问题,由于涉及 yolov5做深度学习,我不得不再次面对这个问题。但!!事不过三,这一次我开展了详细的研究,终于了解到了pycharm下载失败的本质,并找到了相对万能的解决方法。

正文

问题复现

通常情况下,使用pycharm的我们随手百度 “如何下载依赖”,大多数攻略都会告诉我们使用pycharm的内置下载:先更换国内的镜像仓库,然后搜索下载。

就像这张图。
在这里插入图片描述
但结果总不尽如人意,一些比较简单的依赖或许会下载成功,但大多数下载都会面临这样的情况。(这张图是别人的,因为我是配置完成后写的博文)
在这里插入图片描述
这个失败让人摸不着头脑,你或许会跟着报错栏的建议,使用相应的命令继续尝试,但成功率却很随机,有些时候可以成功,有些时候会带领你走向一个新的坑,产生更多的问题。(亲身体会

问题本质

在拜读了无数篇 大佬(对我有所帮助)和瘪三(指文章胡言乱语偷窃他人成功的作者)的文章后,我终于有所启发,发现了一条至关重要的法则。

python中,各个依赖之间的版本对应关系十分重要,而pycharm通常情况下都会为你选择最新版本的依赖

可能有点难理解,我们从两方面考虑,
第一点就是你实际业务所需要的依赖对版本的要求;第二点就是各个依赖之间的版本要求。

举个例子:
你的python是3.11,你需要下载三个依赖:A,B,C

pythonA (最新版本2.1.0)B(最新版本0.15.1)C(最新版本2.3.0)
此时业务所需的正确依赖关系3.1~3.9小于等于2.0.0小于等于0.14.4无要求
可能的错误配置13.112.0.00.14.42.3.0
可能的错误配置23.82.1.00.15.12.3.0
正确配置3.82.0.00.14.42.3.0

如上所示,有时候选择最新版本其实并不一定是件好事,但是,仅仅把所有版本都控制在 业务所需的合法范围 就万事大吉了?

当然不是,因为有些 依赖之间 还有版本要求,接着上面的例子,此时你需要下载一个新的依赖 D,要求关系如下表,那么在这个时候刚刚正确的配置现在还正确吗?

显然出问题了,刚刚合法的A和B因为D的限制,不得不改动版本。并且由于A的限制,python的版本也受到了制约。

pythonA (最新版本2.1.0)B(最新版本0.15.1)C(最新版本2.3.0)D(最新版本1.15.0)
此时业务所需的正确依赖关系3.1~3.9小于等于2.0.0小于等于0.14.4无要求无要求
依赖间的版本要求无要求要求python必须小于3.7无要求无要求需要A的版本小于等于1.9.0B的版本小于等于0.13.0
刚刚的正确配置 3.8 2.0.00.14.42.3.0-

因此,此时此刻,正确的版本应该是:

pythonA (最新版本2.1.0)B(最新版本0.15.1)C(最新版本2.3.0)D(最新版本1.15.0)
刚刚的正确配置3.71.9.00.13.02.3.01.15.0

好了,到这里,原理就很清楚了,pycharm能够下载成功的情况就是依赖关系简单或者正好符合所有要求。
下载失败要么就是缺依赖(就像你腿还没长出来,我就要你跑步),要么就是版本冲突。

解决方案

说到这里,反应再慢的人也应该知道该怎么做了,去依赖的官网,或者去百度“XX与XX之间的版本关系”,查到正确的版本,然后下载。

安装提供两种思路:
①.命令行直接下载,简单快捷【极大多数依赖都可以解决】

pip install XXX(你要下载的依赖名称)==x.x.x(你需要的版本号) -i .......(你所使用的国内镜像仓库)

举例:

pip install torch==1.10.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

②.从仓库里下载whl文件,本地安装
如果你真的运气很差,网络巨慢,换了很多国内仓库依然要下几个小时,那么可以考虑这个方法,去任意一个国内仓库里直接找到你要的资源。

举例:去清华镜像站寻找 torch.

https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述
然后根据你的操作系统,版本,需求找到你需要的来下载。
在这里插入图片描述
这种方式之所以下载速度更快是因为可以使用第三方工具抓取下载,对比一下下载速度(例如 IDM ,不懂的自行百度)
在这里插入图片描述
然后打开cmd,进入你刚刚下载好的文件的目录
开始安装即可

pip install torch-1.11.0-cp310-cp310-win_amd64.whl

补充总结

检查是否安装成功

pip list

在这里插入图片描述

下载的依赖存在哪

储存在你python的安装目录,如图
在这里插入图片描述
前面可能不同,主要找 Lib和site-packages

总结

通过本次探索,终于从本质上解决了这个问题并起到了举一反三的作用,特此记录。

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

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

相关文章

docker 容器使用 loki 插件收集日志

相关资料: The log-opts in the /etc/docker/daemon.json is not relaoded - General Discussions - Docker Community ForumsRecently I want to use loki-log-driver to ship logs to the loki server. The docker-deamon is controlled by systemd. The /etc/docker/daemon…

Day2 Spring

1 BeanFactory 与ApplicationContext的关系BeanFactory与ApplicationContext的关系BeanFactory是Spring的早期接口,称为Spring的Bean工厂,ApplicationContext是后期更高级接口,称之为Spring 容器;ApplicationContext在BeanFactory基础上对功能…

Pytorch 多层感知机

一、什么是多层感知机 多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络(DNN: Deep Neural Networks)。 二、如何实现多层感知机 1、导入所需库并加载fashion_mnist数据集 %matplotlib inline import torch import to…

java弹幕视频网站源码

简介 Java基于ssm的弹幕视频系统,用户注册后可以上传视频进行投稿,也可以浏览视频发送弹幕,在个人中心管理视频、管理弹幕、管理评论等。管理员可以管理视频弹幕评论,查看统计图。 演示视频: https://www.bilibili.c…

CVE-2020-0014 Toast组件点击事件截获漏洞

文章目录前言漏洞分析组件源码触摸属性漏洞利用POC分析漏洞复现漏洞修复总结前言 Toast 组件是 Android 系统一个消息提示组件,比如你可以通过以下代码弹出提示用户“该睡觉了…”: Toast.makeText(this, "该睡觉了…", Toast.LENGTH_SHORT)…

C语言文件操作-从知识到实践全程

目录 引入 文件的打开和关闭 文件如何使用程序来打开? 绝对路径需要转义字符 fopen函数 fclose函数 文件的打开方式(fopen第二参数const char* mode): 文件的顺序读写 fgetc和fputc的使用 fputc fgetc fgets和fputs的使用 fputs fgets perror的使用 fprint…

哪些程序员适合自由工作?(附平台推荐)

在早些时候进行远程办公,接私活或者跨国进行编程,赚点外快等也不是什么奇怪的事情。但是那时候没有人想到会把这些工作完全变成自己的主要业务——也就是我们说的自由工作。也不知道是哪一个第1个吃了螃蟹的人发现自由工作还不错,于是经过后面…

【JavaScript】DOM 学习总结-基础知识

获取元素方法: // 获取三个非常规的标签 console.log(document.documentElement) console.log(document.head) console.log(document.body)通过id/class获取:getElementById / getElementsByClassName // 获取常规的用id,class,tag var boxdocument.g…

Android 自定义Activity的主题

一. 前言 当在某个app中做一个新界面时, 我们要考虑一下主题风格相符合一致. 本篇文章讲解的是,如何新创建的Activity 与整个app主题符合, 特别是状态栏的颜色需要和这个app的状态栏颜色保持一致. 在读本篇文章之前, 可以移步一下笔者之前写的文章:Android style&#xf…

代码随想录算法训练营第十一天字符串 java :20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

文章目录Leetcode 20. 有效的括号题目详解数据结构 双端队列(deque)Deque有三种用途:思路报错Ac代码Leetcode1047. 删除字符串中的所有相邻重复项题目详解数据结构 ArrayDeque类思路AC代码150. 逆波兰表达式求值题目详解报错难点AC代码收获Leetcode 20. 有效的括号 …

系分 - 系统设计

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分 - 系统设计考点摘要系统设计软件设计软件架构设计结构化设计概要设计详细设计处理流程设计流程工作流活动及其所有者工作项工作流管理系统WFMS的基本功能WFMS的组成WRM流程设计工具用户界面设计/人机…

python算法与数据结构1-算法、数据结构、链表

目录1、算法的概念1.1 举例:1.2 算法的五大特性:1.3 时间复杂度1.4 空间复杂度2、数据结构2.1 内存的存储结构2.2 数据结构的分类2.3 顺序表存储方式3、链表3.1链表实现3.2链表的方法3.3链表增加节点3.4链表删除节点3.5链表总结1、算法的概念 算法与数据…

(Java高级教程)第三章Java网络编程-第三节:UDP数据报套接字(DatagramSocket)编程

文章目录一:Java数据报套接字通信模型二:相关API详解(1)DatagramSocket(2)DatagramPacket三:UDP通信示例一:客户端发送什么服务端就返回什么(1)代码&#xff…

k8s之ConfigMap和secret

写在前面 我们知道k8s的数据都是存储到kv数据库etcd中的,那么我们程序中使用到各种配置信息是否可以也存储到etcd,然后在pod中使用呢?是可以的,k8s为了实现将自定义的数据存储到etcd,定义了ConfigMap 和secret两种API…

《后端技术面试 38 讲》学习笔记 Day 01

《后端技术面试 38 讲》学习笔记 Day 01 学习目标 在2022年春节将至(半个月),适合在这个冬天里,温故知新。通过学习一门覆盖面较广的课程,来夯实基础,完善自己的知识体系,是一个很棒的选择。 …

LCHub:未来,低代码产品矩阵是500强企业的绝佳选择

近日,国内知名咨询机LCHub发布2022《中国大型企业数字化升级路径研究》。 报告认为由于大型企业的数字化需求旺盛、购买力充足,因此国内成熟的数字化服务商普遍以大型企业为核心客户。大型企业与数字化服务商的供需磨合决定了我国数字化市场的形态,造就了我国数字化市场与海…

go map 源码逐行阅读

map粗略介绍 源码开头注释: A map is just a hash table. The data is arranged into an array of buckets. Each bucket contains up to 8 key/elem pairs. The low-order bits of the hash are used to select a bucket. Each bucket contains a few high-order…

Linux学习笔记——RabbitMQ安装部署

5.4、RabbitMQ安装部署 5.4.1、简介 RabbitMQ是一款知名的开源消息列队系统,为企业提供消息的发布、订阅、点对点传输等消息服务。 RabbitMQ在企业开发中十分常见,课程为大家演示快速搭建RabbitMQ环境。 5.4.2、安装 RabbitMQ在yum仓库中的版本比较老…

用于从单细胞FRET数据中提取灵敏度分布的Matlab代码

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 对于分子生物学来讲,生物分析手段的发展,是阐明机理的必要条件。在研究分子间相互作用的道路上&#xf…

Leetcode - 106 - 相交链表

160. 相交链表 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&am…