Pycharm 切换interpreter---python的环境和第三方库问题
这篇回答两个问题:
1.为什么在 pycharm中打开新的project,切换interpreter 之后发现自己之前装的库消失了?
2.为什么 interpreter 切换到python'3.8了, terminal 还是在 3.9??
问题的关键:搞懂什么是 environment,环境和pyhton编译的版本不是一个东西,python 本身的安装路径下的site-packages 和 新环境的site-packages 是不同的路径,里面的库也不一样。
简单的理解: 一个python project的编译,需要的是一个环境,
1.默认的是电脑环境变量;是用的电脑安装环境变量下面的path的第一个 python版本以及其下面的site-packages。
2.可以创建新一个环境,这个环境里面要指定一个python版本,然后环境下的site-packages继承自这个 python 版本下的第三方库,然后可以再安装自己需要的库。所以一个好的方式是,本身python下的第三方库最好下一些通用的,然后新的环境里安装需要的特殊的库。
每个site-packages 下面的每一个库只能安装一个版本。
目录
状态1 只有 local 环境,只安装了 python 3.9 ,3.9里面安装过各种库,即package下面的东西
状态 2, 新安装一个 python 3.8, 还没装各种库(里面就numpy pipi setuptools)
状态3:新建了一个3.8环境,并安装了各种库。
状态4: 新打开了一个 名为 wolpertinger_ddpg-master 的project,add interpreter。
总结一下:
问题2是如何出现的? 即为什么我切换了 interpreter到 3.8,我的terminal还是3.9??
之前重装了python3.8以及在3.8环境下装了gym,
意思是:现在电脑上有两个python版本,1是 python3.9,是电脑系统环境里默认的python版本,二是python3.8.
然后今天发生了一件神奇的事情,我重新打开了一个新的project,名字是 wolpertinger_ddpg-master, 又切换到python 3.8编译,结果是发现我的 python 3.8里面 根本没有gym??给我干蒙了。
这只是懵逼1号,接下来更神奇的来了,我尝试 从 terminal 重新 pip gym,结果一直报错!!我把测试了python 版本, 3.9!!! 我明明已经在settings那里把intepreter 切换到3.8了,为啥terminal还是3.9???几次切换重启都没有用
Solution:
pycharm 的虚拟环境【陷阱】,你中招了吗? - 知乎 (zhihu.com)
看了这篇帖子,明白以下问题:
对于问题1,首先要明白环境 env 和 python-version的区别;我所理解的虚拟环境就是编译所需要的全部工具的环境,这里面有一个必选项就是 一个 python 编译器(不同的环境可以有不同的版本),各种第三方的库,第三方的一个名字的库只能装一个版本。
python的一个project 的 编译 需要的是一个环境, 而非一个编译器那么简单。
如何去理解这件事情呢?
先理解四个状态:
状态1 只有 local 环境,只安装了 python 3.9 ,3.9里面安装过各种库,即package下面的东西
状态 2, 新安装一个 python 3.8, 还没装各种库(里面就numpy pipi setuptools)
两种情况的逻辑示意图如上,这两个 实际上都在 安装python的安装路径下,package在 对应的安装path\Lib\site-packages下面。即现在电脑中的情况是:
装了两个version的python
他们各自下面的第三方库是:
状态3:新建了一个3.8环境,并安装了各种库。
我打开了 fjsp-drl-main这个project,在pycharm settings选择 add interpreter,选择的是3.8,然后请注意:这是选择新建了一个环境,这个环境在这个project的路径下(当然我第一次新建时候并不知道环境这个东西,才会导致后来的出错)
然后我在 这个环境的package里装了 gym==018.0等等几个第三方库。
也就是这个环境现在是这样的,注意哦,我标的Env是 这个project而不是local
那么这些库的实际路径在哪里呢??
状态4: 新打开了一个 名为 wolpertinger_ddpg-master 的project,add interpreter。
我本意是使用python 3.8编译,而且想要 使用和 上一个 project ( fjsp-drl-main)一样的库,其实也就是 ( fjsp-drl-main)的环境。但是因为不懂环境 并不等同于python的version,也就是一个python 版本可以在多个环境里存在。 这时候 发现 我的库怎么都没了??
其原因是: 这个python 3.8环境是新建的,就是 里面只有 local 38的库,就是 和
3.8pyhton 安装路径下的package 里的是一样的。
总结一下:
就是 最开始 只有状态 1,3.9 version, 然后 安装了 第二个python版本 ,3.8version;
状态3,打开fjsp-drl-main project,新建了一个环境,编译版本是3.8,安装了第三方的库;
状态4,打开了 wolpertinger_ddpg-master,新建了一个环境,编译版本是3.8。新建的env只会继承对应的 python版本local的下的库,即 状态4现在来自状态2,所以并没有状态3下面的第三方库,这就是我为什么安装了三方库,库不见了得原因。
在从安装路径角度看一下:
状态1的packages 也就是第三方库的安装是在python本身安装路径下:
D:\APPs\Python\Python39\Lib\site-packages
状态2: D:\APPs\Python\Python3.8.5\Lib\site-packages
状态3:D:\MyWorks\PythonProject\fjsp-drl-main\venv\Lib\site-packages
状态4:D:\MyWorks\PythonProject\RL\wolpertinger_ddpg-master\venv\Lib\site-packages
状态4的site-packages 继承自 状态2,就是python3.8下面本身的那个site-packages,自然没有状态 3 site-packages里装的库了,问题1 至此结束。
问题2是如何出现的? 即为什么我切换了 interpreter到 3.8,我的terminal还是3.9??
我在状态4没找到第三方库的时候,以为操作有问题,又一次 add interpreter, 这次没有 new 一个新的 environment,而是选择了local,即选了状态2的编译环境。这个时候要注意,
选了interpreter为状态2,在terminal查询
我猜测,是Local 的环境问题。就是 现在没有新的环境,因此 ternimal并没有切换到任何环境。 选择的local 是电脑 local 的python 的编译路径。而我电脑的环境变量,3.9在3.8之前,所以电脑系统默认的python 版本就是 3.9,所以terminal显示是3.9.
解决方案:
既然我想用状态3下面的环境编译,要么把 project ”wolpertinger_ddpg-maste“的环境切换到状态3的那个环境;要么 在状态4下面新装需要的库。
第一种切换环境:
不要新建环境,直接从 exsiting里选 状态3 的那个环境路径。
切换之后就有对应的库了
注意这个时候,terminal 还没有切换,要想把terminal切换到这个环境下,需要
D:\MyWorks\PythonProject\fjsp-drl-main\venv\Scripts
命令如下
cd D:\MyWorks\PythonProject\fjsp-drl-main\venv\Scripts.\activate
前面出现 venv,即环境名字,说明切换成功。
也有教程如何让terminal自动切换到对应虚拟环境的,后面再说吧,累了。。。。。
相关文章:
Pycharm 切换interpreter---python的环境和第三方库问题
这篇回答两个问题: 1.为什么在 pycharm中打开新的project,切换interpreter 之后发现自己之前装的库消失了? 2.为什么 interpreter 切换到python3.8了, terminal 还是在 3.9?? 问题的关键:搞懂什…...
TP-LINK 路由器忘记密码 - 恢复出厂设置
TP-LINK 路由器忘记密码 - 恢复出厂设置 1. 恢复出厂设置2. 创建管理员密码3. 上网设置4. 无线设置5. TP-LINK ID6. 网络状态References 1. 恢复出厂设置 在设备通电的情况下,按住路由器背面的 Reset 按钮直到所有指示灯同时亮起后松开。 2. 创建管理员密码 3. 上网…...
关闭 Elasticsearch 集群的安全性设置
关闭 Elasticsearch 集群的安全性设置,特别是如果您正在使用 X-Pack,涉及到修改 Elasticsearch 的配置。以下是一般步骤,但请注意,这可能会使您的 Elasticsearch 集群面临安全风险,因此建议仅在开发或测试环境中执行此…...
[技术分享]一招解决 MySQL 中 DDL 被阻塞的问题
爱可生开源社区. 爱可生开源社区,提供稳定的MySQL企业级开源工具及服务,每年1024开源一款优良组件,并持续运营维护。 背景 之前碰到客户咨询定位DDL阻塞的相关问题,整理了一下方法,如何解决DDL被阻塞的问题。下面,就这个问题,整理了一下思路: 怎么判断一个 DDL 是…...
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…...
自动化测试系列 之 Python单元测试框架unittest
一、概述 什么是单元测试 单元测试是一种软件测试方法,是测试最小的可测试单元,通常是一个函数或一个方法。 在软件开发过程中,单元测试作为一项重要的测试方法被广泛应用。 为什么需要单元测试 单元测试是软件开发中重要的一环…...
C语言朴素算法
#include <stdio.h> #include <string.h>// 朴素算法,用于字符串匹配 void naiveMatch(char* text, char* pattern) {int textLength strlen(text); // 计算文本串长度int patternLength strlen(pattern); // 计算模式串长度for …...
【力扣题解】P501-二叉搜索树中的众数-Java题解
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P501-二叉搜索树中的众数-Java题解🌏题目描述💡题解…...
Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务
最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…...
深信服AF防火墙配置SSL VPN
防火墙版本:8.0.85 需提前确认防火墙是是否有SSL VPN的授权,确认授权用户数量 1、确认内外网接口划分 2、网络→SSL VPN,选择内外网接口地址 3、SSL VPN→用户管理→新增一个SSL VPN的用户 4、新增L3VPN资源,类型选择Other&…...
在Spring Cloud中使用Gateway 网关
我们在上述文章中介绍了相关Spring Cloud的五大核心组件,现在我们来了解一下关于Spring Cloud的网关,关于使用网关,我们同时也需要知道他在一个架构中起到的作用,并且,我们需要知道网关具体的相关功能,本篇…...
【Python】配置环境变量
Python配置Windows系统环境变量 打开电脑属性 ——> 高级系统设置 ——> 高级 ——> 环境变量 Python安装目录 D:\Program Files\Python39 winR打开运行,输入cmd打开命令窗口 python -V...
使用.Net nanoFramework 驱动ESP32的OLED显示屏
本文介绍如何使用.Net nanoFramework 驱动ESP32的OLED显示屏。我们将会从最基础的部分开始,逐步深入,让你能够理解并实现整个过程。无论你是初学者还是有一定经验的开发者,这篇文章都会对你有所帮助。 1. 硬件准备 1.1 ESP32开发板 这里我们…...
0基础学习VR全景平台篇第134篇:720VR全景,云台调整节点
相机、云台和脚架全套设备组装完成后需要进行调校才能开始拍摄。这一节,我们将主要介绍云台调整的两个内容:对中心靶、调三点一线。(后附调校原理) 云台部件名称 一、调节准备 (一)对于安装好的云台 1.检…...
扫地机器人地图与用户终端的同步
以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng 地图数据来源于机器人算法模块,一般通过SLAM算法完成建图的过程。 建图过程中,基础数据涉及到各…...
使用机器学习进行语法错误检测/纠正
@francescofranco_39234 一、说明 一般的学习,特别是深度学习,促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天,我们将研究另一个流行的用途:我们将使用Gramformer构建一个用于机器学习语法错误检测和纠正的管道。 阅读本文…...
从0到1快速入门ETLCloud
一、ETLCloud的介绍 ETL是将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程,目的是将企业中的分散、凌乱、标准不统一的数据整合到一起,为企…...
QT上位机开发(会员管理软件)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了ini文件的解析办法,通过QSettings类就可以很轻松地访问ini文件里面的数据。除了ini文件之外,另外一种经常出…...
线性代数笔记3 1.1
学习视频: 2.2 矩阵运算(二)_哔哩哔哩_bilibili 包括内容: p10矩阵运算(二) p11特殊矩阵 p12逆矩阵(一) p13逆矩阵(二)...
2023年12月编程语言排行榜
TIOBE Index for December 2023 December Headline: C# on its way to become programming language of the year 2023 2023年12月的TIOBE指数:12月头条:c#将成为2023年最佳编程语言 Yes, I know, we have been here before. At the end of 2022, it looked like …...
Redis VS Memcached:选择哪个更适合您的应用?
目录 1、前言 2、概念简介 2.1 Redis 2.2 Memcached 3、数据模型 4、持久性 5、分布式能力 6、性能和扩展性 7、如何选择适合您引用的缓存系统 8、结语 1、前言 Redis和Memcached都是常见的内存缓存系统,用于提升应用程序的性能和可扩展性。它们都具有高…...
【HarmonyOS开发】共享包HAR和HSP的创建和使用以及三方库的发布
OpenHarmony提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包。 HAR与HSP都是为了实现代码和资源的共享,都可以包含代码、C库、资源和配置文件&…...
安装 Node.js、npm
安装 nodejs 安装Node.js的最简单的方法是通过软件包管理器。 Node.js官网:https://nodejs.org/en/download/ cd /usr/local/src/wget -c https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz xz -d node-v18.16.0-linux-x64.tar.xz tar -xf node…...
解决报错:找不到显卡
今天做实验碰到一个问题:torch找不到显卡: 打开任务管理器,独显直接没了,一度以为是要去修电脑了,突然想到上次做实验爆显存,屏蔽了gpu用cpu训练: import os os.environ["CUDA_DEVICE_OR…...
如何使用Node.js快速创建本地HTTP服务器并实现公网访问服务端
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【社交网络分析】课程考试复盘 + 相关资料补充
【社交网络分析】考试后复盘 相关资料补充 写在最前面论述1.描述Logistic回归模型构造损失函数的主要思想。它是如何把线性回归预测模型转化为二分类模型的。Logistic回归模型构造损失函数的主要思想Logistic回归如何将线性回归预测模型转化为二分类模型 2.社交网络分析中面临…...
算法——队列+宽搜(BFS)
队列这种数据结构大都服务于一个算法——宽搜(BFS)。宽搜还可以运用到二叉树、图、迷宫最短路径问题、拓扑排序等等 N叉数的层序遍历 N叉树的层序遍历 题目解析 给定一个 N 叉树,返回其节点值的_层序遍历_。(即从左到右&#…...
前端八股文(CSS篇)二
目录 1.css中可继承与不可继承属性有哪些 2.link和import的区别 3.transition和animation的区别 4.margin和padding的使用场景 5.::before和:after的双冒号和单冒号有什么区别? 6.display:inline-block什么时候会显示间隙 7…...
系统架构设计师笔记
第1章计算机组成与体系结构 1.1.1计算机硬件的组成 (1)控制器。控制器是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,所依据的是机器指令。控制器的组成包含如下。 ①程序计数器PC:存储下…...
Livox-Mid-360 固态激光雷达ROS格式数据分析
前言: Livox-Mid-360 官方采用livox_ros_driver2ROS功能包发布ROS格式的数据,livox_ros_driver2可以把Livox原始雷达数据转化成ROS格式并以话题的形式发布出去。 下面列举一些雷达的基本概念: 点云帧:雷达驱动每次向外发送的一…...
在线做春节网站/如何快速优化网站排名
redis–18–集群–理论 1、集群简介 1.1、主从架构 优点 读写分离,通过增加Slaver可以提高并发读的能力。 缺点 Master写能力是瓶颈。 1.2、哈希Slot 对象保存到Redis之前先经过CRC16哈希到一个指定的Node上,例如Object4最终Hash到了Node1上。将整…...
室内设计师前景怎么样/seo排名工具外包
在本地调试运行spark程序时,报错Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/spark/SparkConf,这个错误就是程序在运行时找不到类 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConfat cn.jin…...
网站建设需要做的事情/免费网络营销推广软件
在PHP中,数组函数 array_uintersect_assoc () 使用用户提供的回调函数比较值,用内置的函数比较键,计算数组交集。 函数语法: array_udiff_assoc ( array $array1 , array $array2 [, array $array3... ], callable $value_compar…...
腾讯官方网站建设/网站 推广
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git视频观看 百问网驱动大全 先学习输入系统应用编程 1. 百问网Linux视频体系 2. 建议 在《Linux系列教程之…...
团队协同网站开发/专业搜索引擎seo服务
看了几本书,发觉自己好久没有看书了。 这几个月逛了几次书店,就今天的这次属于是有点进书店的感觉。《Professional C# 2008》真的很大一本,拿在手里看挺辛苦的。蹲着看了几章,还是中文比较好看懂,之前看2005的英文版。…...
平面设计类的网站/友情链接买卖
SQLite分页显示:Select * From news order by id desc Limit 10 Offset 10这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么翻译不当的地方希望大家指出,毕竟我的英文水平实在很差。 SQLite 包括以下五个时间函数: date(…...