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自动切换到对应虚拟环境的,后面再说吧,累了。。。。。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概率论相关题型

文章目录 概率论的基本概念放杯子问题条件概率与重要公式的结合独立的运用 随机变量以及分布离散随机变量的分布函数特点连续随机变量的分布函数在某一点的值为0正态分布标准化随机变量函数的分布 多维随机变量以及分布条件概率max 与 min 函数的相关计算二维随机变量二维随机变…

raise readtimeouterror(self._pool, none, “Read timed out.“)

解决办法: 在Windows下: C:\用户\Administrator\下,新建pip文件夹,在创建pip.ini文件,拷贝下面代码进去,保存; [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple 然后重新执行…

批量抠图软件哪个好用?推荐这三款抠图工具给你

在数字图像处理的世界里,抠图是个不可或缺的环节。对于那些经常需要从复杂背景中提取主体的设计师和摄影师来说,抠图技巧无疑是一项宝贵的职业技能。然而,当面对大量的抠图需求时,手动处理不仅耗时,而且效率低下。因此…

UWB高精度人员定位系统源码,全方位护航安全生产

定位管理系统使用UWB定位技术,通过在厂区安装定位基站,为人员或设备佩戴定位标签的形式,实现人员精准实时定位。可以实现人员、车辆物资实时定位、工作考勤、电子围栏、历史轨迹回放、巡检巡查、物资盘点、路径规划、三维显示等,以…

2分钟明白什么是SCADA?

SCADA——数据采集和监控系统的英文缩写,国内流行的叫法是,监控组态软件,是生产控制的核心,是位于控制设备之上,侧重于管理的纯软件,在ERP/MES/PCS架构中起承上启下的作用。SCADA负责控制或监控整个工厂&am…

数组形式的整数加法C语言❤

一、题目: 整数的 数组形式 是按照从左到右的顺序表示其数字的数组。num 例如,对于 ,数组形式是 。num 1321[1,3,2,1] 给定 ,整数的 数组形式 ,和整数 ,返回 整数 num k 的 数组形式 。numk 示例 1&…

蓝桥杯嵌入式UART

1.电路原理图 2.CubeMX配置 3.串口发送 4.串口接收

Zookeeper之快速入门

前言 本篇文章主要还是让人快速上手入门,想要深入的话可以通过书籍系统的学习。 简介 是什么 可用于协调、构建分布式应用。 本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理…

o2o生活通全开源尊享版+多城市切换+企业付款+交友IM+平台快报

搭建教程 1.把 pigo2ov282.sql 文件里面的网址 test.souho.net 全部批量替换为你的自己的 2.使用 phpmyadmin 导入 pigo2ov282.sql 到你的数据库(直接访问/phpmyadmin 即可) 3.修改数据库文件/conf/db.php 里的数据库连接信息(请勿使用记事本…

PAT 乙级 1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其…

计算机网络复习4

网络层——点到点 文章目录 网络层——点到点功能路由算法IPV4NAT 网络地址转换子网划分与子网掩码、CIDR地址解析协议ARP:根据IP地址找到MAC地址动态主机配置协议DHCP网际控制报文协议ICMPIPV6内部网关协议(IGP)外部网关协议(EGP) 功能 异构…

【adb】--- win10 配置 adb环境 超详细 (持续更新中)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【adb】--- win10 配置 adb环境 超详细 &…