如何在`Pycharm`中配置基于WSL的`Python Interpreters`,以及配置基于WSL的`Terminal`

文章目录

    • 一、创建pycharm用户并授予sudo权限
      • 0. 启动WSL下的CentOS
      • 1. 创建pycharm用户并授予sudo权限
      • 2. 设置pycharm用户为wsl启动Linux的默认用户
      • 3. 重启并重新登录wsl下的CentOS
      • 4. 验证pycharm用户的sudo权限
    • 二、创建基于WSL的Python Interpreter
      • 1. 添加基于WSL的Python Interpreter
      • 2. 选择 Linux 分发
      • 3. 选择Python Interpreter环境
      • 4. 在Pycharm下使用WSL的Python解释器
    • 三、配置基于WSL的Terminal
      • 1. 配置Terminal
      • 2. 验证WSL Terminal配置是否成功
      • 3. 进入Terminal时,自动激活虚拟环境
      • 4. 验证效果

本文将总结如何在Pycharm中配置基于WSL的Python Interpreters,以及配置基于WSL的Terminal

以下演示环境:
WSL 分发版本:CentOS8
Pycharm 版本:Pycharm 2023.2

你可能需要的:
如何在WSL上导入任何Linux发行版
PyCharm 各版本下载
使用JetBrains家族产品的同学,你可能需要:ja-netfilter、ja-netfilter-all

一、创建pycharm用户并授予sudo权限

这里在WSL下的CentOS里创建一个名为pycharm的用户,专供Pycharm工具使用。
(当然这不是必须的,你可以使用默认的root用户,但不推荐,你也可以使用其他已有的用户)

0. 启动WSL下的CentOS

wsl -d CentOS8

1. 创建pycharm用户并授予sudo权限

先更新yum源,安装passwdsudo命令

yum update -y && yum install passwd sudo -y
adduser -G wheel pycharm

命令adduser -G wheel pycharm将用户添加到wheel组。 wheel组中的用户会自动被授予 sudo权限,并且可以执行需要提升权限的任务。

passwd pycharm

使用passwd pycharm命令给用户设置密码

2. 设置pycharm用户为wsl启动Linux的默认用户

echo -e "\n[user]\ndefault=pycharm" >> /etc/wsl.conf

3. 重启并重新登录wsl下的CentOS

wsl --terminate CentOS8
wsl -d CentOS8

4. 验证pycharm用户的sudo权限

C:\Users\Administrator>wsl -d CentOS8 --cd ~
[pycharm@GC ~]$ ls /root
ls: cannot open directory '/root': Permission denied
[pycharm@GC ~]$ sudo ls /rootWe trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:#1) Respect the privacy of others.#2) Think before you type.#3) With great power comes great responsibility.[sudo] password for pycharm:
anaconda-ks.cfg  anaconda-post.log  original-ks.cfg
[pycharm@GC ~]$

二、创建基于WSL的Python Interpreter

在你的Python项目中,添加基于WSL的Python Interpreter

1. 添加基于WSL的Python Interpreter

打开Pycharm的设置 > Project: <项目名称> > Python Interpreter
点击Add Interpreter,选择On WSL

在这里插入图片描述

2. 选择 Linux 分发

在 Linux distribution 下拉列表,选择你要使用的Linux分发,我这里选择CentOS8,选择后将自动检测所选的Linux分发是否有可用的Python环境。
(如果没有可用的python环境,则需要自行安装)

在这里插入图片描述

3. 选择Python Interpreter环境

支持System Interpreter系统级的Python解释器,也支持Virtualenv EnvironmentConda Environmen虚拟环境。推荐使用虚拟环境,防止污染Linux系统的Python环境。
这里使用Virtualenv Environment,创建一个新的虚拟环境,默认它会创建在默认的用户主目录下创建一个.virtualenvs/<项目名称>下。

在这里插入图片描述

4. 在Pycharm下使用WSL的Python解释器

如下,可以在Pycharm下使用基于WSL的Python解释器了。
在这里插入图片描述

三、配置基于WSL的Terminal

大多数情况下,在项目开发过程中,可能需要登录到Python解释器所在的终端进行一些相关的配置等。下面是如何配置在Pycharm中登录WSL下的Linux终端。

1. 配置Terminal

打开Pycharm的设置 > Tools > Terminal
Application SettingsShell path中配置修改为wsl(默认的为ps或cmd)
这里填写的方式跟命令行一样,可以带参数,如:

wsl -d CentOS8 --cd ~

指定wsl启动的分发,并且进入Linux后切换到用户主目录
如果不指定CentOS8,则会启动当前系统下默认的Linux分发。
如果不指定–cd参数,则进入Linux后默认是当前项目所在路径。

你也可以指定登录Linux的用户,如下:

wsl -d CentOS8 -u pycharm --cd ~

如果不指定-u参数,则会登录默认的用户。因为前面设置里,已经将pycharm用户设置为CentOS8的默认登录用户了,所以针对示例来说,可以不用-u pycharm

在这里插入图片描述

2. 验证WSL Terminal配置是否成功

可以看到打开Terminal时,默认打开了 WSL的CentOS终端,并且切换到了pycharm用户的主目录。

在这里插入图片描述
但是我还想在进入Terminal终端时,自动激活虚拟环境。
继续往下看。

3. 进入Terminal时,自动激活虚拟环境

在用户主目录下的.bashrc文件末尾添加如下命令:
source ~/.virtualenvs/StudyA/bin/activate

示例:

[pycharm@GC ~]$ vi .bashrc
[pycharm@GC ~]$ cat .bashrc
# .bashrc# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
thenPATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=# User specific aliases and functionssource ~/.virtualenvs/StudyA/bin/activate[pycharm@GC ~]$

4. 验证效果

如下可以看出,打开CentOS的Terminal后,自定激活了虚拟环境
在这里插入图片描述



参考资料:
add-wsl-specific-components-like-a-default-user
using-wsl-as-a-remote-interpreter

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

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

相关文章

DR IP-SoC China 2023 Day演讲预告 | 龙智Perforce专家解析芯片开发中的数字资产管理

2023年9月6日&#xff08;周三&#xff09;&#xff0c;龙智即将亮相于上海举行的D&R IP-SoC China 2023 Day&#xff0c;呈现集成了Perforce与Atlassian产品的芯片开发解决方案&#xff0c;助力企业更好、更快地进行芯片开发。 D&R IP-SoC China 2023 Day 是中国首个…

⽹络与HTTP 笔试题精讲1

OSI七层与TCP/IP 这个就是OSI参考模型,⽽实际我们现在的互联⽹世界是就是这个理论模型的落地叫做TCP/IP协议 TCP的三次握⼿与四次挥⼿ 客户端想要发送数据给服务端,在发送实际的数据之前,需要先在两端之间建⽴连接,数据发完以后也需要将该连接关闭。建⽴连接的过程就是我们…

热门框架漏洞

文章目录 一、Thinkphp5.0.23 代码执行1.thinkphp5框架2.thinkphp5高危漏洞3.漏洞特征4.THinkphp5.0 远程代码执行--poc5.TP5实验一(Windows5.0.20)a.搭建实验环境b.测试phpinfoc.写入shelld.使用菜刀连接 6.TP5实验二(Linux5.0.23)a.搭建实验环境b.测试方法c.测试phpinfod.写入…

SQL 语句继续学习之记录三

一&#xff0c;数据的插入&#xff08;insert 语句的使用方法&#xff09; 使用insert语句可以向表中插入数据(行)。原则上&#xff0c;insert语句每次执行一行数据的插入。 列名和值用逗号隔开&#xff0c;分别扩在&#xff08;&#xff09;内&#xff0c;这种形式称为清单。…

如何使用Python和正则表达式处理XML表单数据

在日常的Web开发中&#xff0c;处理表单数据是一个常见的任务。而XML是一种常用的数据格式&#xff0c;用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式&#xff0c;介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思…

VB6.0 设置窗体的默认焦点位置在 TextBox 中

文章目录 VB6.0 窗体的加载过程确定指针的焦点位置添加代码效果如下未设置指定焦点已设置焦点 VB6.0 窗体的加载过程 在VB6.0中&#xff0c;窗体&#xff08;Form&#xff09;加载时会触发多个事件&#xff0c;这些事件按照特定的顺序执行。下面是窗体加载过程中常见事件的执行…

基于ETLCloud的自定义规则调用第三方jar包实现繁体中文转为简体中文

背景 前面曾体验过通过零代码、可视化、拖拉拽的方式快速完成了从 MySQL 到 ClickHouse 的数据迁移&#xff0c;但是在实际生产环境&#xff0c;我们在迁移到目标库之前还需要做一些过滤和转换工作&#xff1b;比如&#xff0c;在诗词数据迁移后&#xff0c;发现原来 MySQL 中…

常见路由跳转的几种方式

常见的路由跳转有以下四种&#xff1a; 1. <router-link to"跳转路径"> /* 不带参数 */ <router-link :to"{name:home}"> <router-link :to"{path:/home}"> // 更建议用name // router-link链接中&#xff0c;带/ 表示从根…

elementUI可拖拉宽度抽屉

1&#xff0c;需求&#xff1a; 在elementUI的抽屉基础上&#xff0c;添加可拖动侧边栏宽度的功能&#xff0c;实现效果如下&#xff1a; 2&#xff0c;在原组件上添加自定义命令 <el-drawer v-drawerDrag"left" :visible.sync"drawerVisible" direc…

Unity 顶点vertices,uv,与图片贴图,与mesh

mesh就是组成3d物体的三角形们。 mesh由顶点组成的三角形组成&#xff0c;三角形的大小 并不 需要一样&#xff0c;由顶点之间的位置决定。 mesh可以是一个或者多个面。 贴图的原点在左下角&#xff0c;uv是贴图的坐标&#xff0c;数量和顶点数一样&#xff08;不是100%确定…

Vue3 el-tooltip 根据内容控制宽度大小换行和并且内容太短不显示

el-tooltip 根据长度自适应换行以及显隐 环境 vue: "3.2.37" element-ui: "2.1.8"要求 tooltip 根据内容自动换行如果内容超出显示省略号显示&#xff0c;不超出不显示 tooltip 代码 组件 // ContentTip 组件 <template><el-tooltipv-bind&qu…

【数学建模竞赛】超详细Matlab二维三维图形绘制

二维图像绘制 绘制曲线图 g 是表示绿色 b--o是表示蓝色/虚线/o标记 c*是表示蓝绿色(cyan)/*标记 ‘MakerIndices,1:5:length(y) 每五个点取点&#xff08;设置标记密度&#xff09; 特殊符号的输入 序号 需求 函数字符结构 示例 1 上角标 ^{ } title( $ a…

初识c++

文章目录 前言一、C命名空间1、命名空间2、命名空间定义 二、第一个c程序1、c的hello world2、std命名空间的使用惯例 三、C输入&输出1、c输入&输出 四、c中缺省参数1、缺省参数概念2、缺省参数分类3、缺省参数应用 五、c中函数重载1、函数重载概念2、函数重载应用 六、…

【⑰MySQL】 变量 | 循环 | 游标 | 处理程序

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL变量 | 循环 | 游标 | 处理程序的分享✨ 目录 前言1. 变量1.1系统变量1.2 用户变量 2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4 案例解决 3. 流程控制3.1 分支结构3.2 循环结构3.3 跳转…

设计模式-9--迭代器模式(Iterator Pattern)

一、什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于提供一种统一的方式来访问一个聚合对象中的各个元素&#xff0c;而不需要暴露该聚合对象的内部结构。迭代器模式将遍历集合的责任从集合对象中分离出来&#xf…

【深入解析spring cloud gateway】07 自定义异常返回报文

Servlet的HttpResponse对象&#xff0c;返回响应报文&#xff0c;一般是这么写的&#xff0c;通过输出流直接就可以将返回报文输出。 OutputStream out response.getOutputStream(); out.write("输出的内容"); out.flush();在filter中如果发生异常&#xff08;例如…

Java中的网络编程------基于Socket的TCP编程和基于UDP的网络编程,netstat指令

Socket 在Java中&#xff0c;Socket是一种用于网络通信的编程接口&#xff0c;它允许不同计算机之间的程序进行数据交换和通信。Socket使得网络应用程序能够通过TCP或UDP协议在不同主机之间建立连接、发送数据和接收数据。以下是Socket的基本介绍&#xff1a; Socket类型&…

1775_树莓派3B键盘映射错误解决

全部学习汇总&#xff1a; GitHub - GreyZhang/little_bits_of_raspberry_pi: my hacking trip about raspberry pi. 入手树莓派3B之后用了没有多长时间&#xff0c;最初的这段时间感觉想让它代替我的PC机是不肯能的。性能先不说&#xff0c;我完全没有找到当初在我的笔记本上使…

css网格布局

css网格布局 常用属性 display: grid; //开启网格grid-template-columns: 2fr 1fr 1fr 1fr 1fr; //设置多少列每列宽度grid-gap: 10px; // 设置表格之间间距grid-template-rows: 50px 50px 50px 50px; // 设置多少行 每行的高度grid-column : 1 //占据位置 占据1格grid-colu…

机器人中的数值优化(九)——拟牛顿方法(下)、BB方法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…