当前位置:   article > 正文

Pycharm 切换interpreter---python的环境和第三方库问题_pycharm interpreter

pycharm interpreter

这篇回答两个问题:

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

命令如下

  1. cd D:\MyWorks\PythonProject\fjsp-drl-main\venv\Scripts
  2. .\activate

前面出现 venv,即环境名字,说明切换成功。

也有教程如何让terminal自动切换到对应虚拟环境的,后面再说吧,累了。。。。。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号