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

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

一、概述 什么是单元测试 单元测试是一种软件测试方法,是测试最小的可测试单元,通常是一个函数或一个方法。 在软件开发过程中,单元测试作为一项重要的测试方法被广泛应用。 为什么需要单元测试 单元测试是软件开发中重要的一环&#xf…...

C语言朴素算法

#include <stdio.h> #include <string.h>// 朴素算法&#xff0c;用于字符串匹配 void naiveMatch(char* text, char* pattern) {int textLength strlen(text); // 计算文本串长度int patternLength strlen(pattern); // 计算模式串长度for …...

【力扣题解】P501-二叉搜索树中的众数-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P501-二叉搜索树中的众数-Java题解&#x1f30f;题目描述&#x1f4a1;题解&#x1f…...

Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…...

深信服AF防火墙配置SSL VPN

防火墙版本&#xff1a;8.0.85 需提前确认防火墙是是否有SSL VPN的授权&#xff0c;确认授权用户数量 1、确认内外网接口划分 2、网络→SSL VPN&#xff0c;选择内外网接口地址 3、SSL VPN→用户管理→新增一个SSL VPN的用户 4、新增L3VPN资源&#xff0c;类型选择Other&…...

在Spring Cloud中使用Gateway 网关

我们在上述文章中介绍了相关Spring Cloud的五大核心组件&#xff0c;现在我们来了解一下关于Spring Cloud的网关&#xff0c;关于使用网关&#xff0c;我们同时也需要知道他在一个架构中起到的作用&#xff0c;并且&#xff0c;我们需要知道网关具体的相关功能&#xff0c;本篇…...

【Python】配置环境变量

Python配置Windows系统环境变量 打开电脑属性 ——> 高级系统设置 ——> 高级 ——> 环境变量 Python安装目录 D:\Program Files\Python39 winR打开运行&#xff0c;输入cmd打开命令窗口 python -V...

使用.Net nanoFramework 驱动ESP32的OLED显示屏

本文介绍如何使用.Net nanoFramework 驱动ESP32的OLED显示屏。我们将会从最基础的部分开始&#xff0c;逐步深入&#xff0c;让你能够理解并实现整个过程。无论你是初学者还是有一定经验的开发者&#xff0c;这篇文章都会对你有所帮助。 1. 硬件准备 1.1 ESP32开发板 这里我们…...

0基础学习VR全景平台篇第134篇:720VR全景,云台调整节点

相机、云台和脚架全套设备组装完成后需要进行调校才能开始拍摄。这一节&#xff0c;我们将主要介绍云台调整的两个内容&#xff1a;对中心靶、调三点一线。&#xff08;后附调校原理&#xff09; 云台部件名称 一、调节准备 &#xff08;一&#xff09;对于安装好的云台 1.检…...

扫地机器人地图与用户终端的同步

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng 地图数据来源于机器人算法模块&#xff0c;一般通过SLAM算法完成建图的过程。 建图过程中&#xff0c;基础数据涉及到各…...

使用机器学习进行语法错误检测/纠正

@francescofranco_39234 一、说明 一般的学习,特别是深度学习,促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天,我们将研究另一个流行的用途:我们将使用Gramformer构建一个用于机器学习语法错误检测和纠正的管道。 阅读本文…...

从0到1快速入门ETLCloud

一、ETLCloud的介绍 ETL是将业务系统的数据经过抽取&#xff08;Extract&#xff09;、清洗转换&#xff08;Transform&#xff09;之后加载&#xff08;Load&#xff09;到数据仓库的过程&#xff0c;目的是将企业中的分散、凌乱、标准不统一的数据整合到一起&#xff0c;为企…...

QT上位机开发(会员管理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了ini文件的解析办法&#xff0c;通过QSettings类就可以很轻松地访问ini文件里面的数据。除了ini文件之外&#xff0c;另外一种经常出…...

线性代数笔记3 1.1

学习视频&#xff1a; 2.2 矩阵运算&#xff08;二&#xff09;_哔哩哔哩_bilibili 包括内容&#xff1a; p10矩阵运算&#xff08;二&#xff09; p11特殊矩阵 p12逆矩阵&#xff08;一&#xff09; p13逆矩阵&#xff08;二&#xff09;...

2023年12月编程语言排行榜

TIOBE Index for December 2023 December Headline: C# on its way to become programming language of the year 2023 2023年12月的TIOBE指数&#xff1a;12月头条:c#将成为2023年最佳编程语言 Yes, I know, we have been here before. At the end of 2022, it looked like …...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...