全网首发如何把Pycharm远程解释器设置为WSL2 CentOS里面的python

186次阅读
2条评论

共计 2650 个字符,预计需要花费 7 分钟才能阅读完成。

背景

最近在 Windows 下面运行一个类似下面的脚本时遇到了一些问题,

import os
from config import request_params
for i in request_params['params']:
    os.system("python main.py" + "-i" + i)

是这样的,我的 win10 上装了两个 python 解释器,一个是用 python 官方提供的 exe 装的 python3.7,一个是用 pyenv-win 装的 2.7.8,然后执行了 pyenv global 2.7.8,但是好像没什么卵用,命令行输入 python 仍然进的是 3.7 的交互式环境,

紧接着我们再来说说上面这个脚本,上面 os.system()调用的那个 main.py 是主要执行的脚本,只兼容 python2,问题出在哪呢,系统只会用 python 官方提供的 exe 装的 python3.7 来执行我这个 main.py, 那我这个 main.py 肯定要报错呀,

当时各种折腾都搞不定,现在想想如果我所有的 python 版本都用 pyenv-win 来维护,说不定就没问题了,也即是不用 python 官方提供的 exe 来安装 python 了,我当时主要图用其自带的 pip 安装 pyenv-win 比较标准化一些。

最后,不管怎么说吧,上了 WSL2 的这条船,不得不说,打开了新的一片天地。

碎碎念

下面 WSL2 迷弟碎碎念时间:

在 WSL2 下面,oh-my-zsh 一切正常,号称 vim 史上最难安装的插件 youcompleteme 一键编译成功,同样,python2.7.8,python3.7.9,以及 Nginx 均一键编译成功,最后 pyinstaller 也打包正常,我不得不说一下 WSL2 大法好呀~

接着来念叨一点别的:

我们都知道微软官方并没有在 windows store 里面提供官方支持的 centos 安装包,即使是从微软官方 这里 手动下载那个.appx 文件用命令安装也是和 windows store 里面安装一样都没有 centos,那大家为啥执着于一定要用 centos 呢,想必均是想和服务器端环境保持一致,毕竟大部分公司服务器端都用的是 centos 嘛。

弯路

由于 WSL 安装 centos,网上一般都推荐用 LxRunOffline 来安装,老实说我也装了,但是有个问题哈,LxRunOffline 安装的 centos 是没有 exe 文件的,而 这里 的 pycharm 官方文档中的添加 wsl 自定义发行版的配置中有个 <executable-path>c:/linux/arch.exe</executable-path> 的标签,里面的值必须是个 exe 文件的相对或绝对路径,

全网首发如何把 Pycharm 远程解释器设置为 WSL2 CentOS 里面的 python

我折腾过把里面的值设置为“D:\WSL\LxRunOffline.exe run -n centos”, 可是这里面一有空格最后 pycharm 好像就会报错,或者 pycharm 在 add python interpreter 的 WSL 选项的界面里根本不显示你自定义的发行版的名字,

还折腾过把“LxRunOffline s -d”命令生成的快捷方式的路径放在上面那个 <executable-path> 标签里面,最后来来回回几遍都不行.

按照上面两种方式反反复复搞了一个下午都没能让 pycharm 支持 WSL centos 里面的 python。

终极解决方案

[$]

其实很简单哦,

1. 访问 CentOS 的官方 Docker 镜像网站:CentOS Cloud SIG image repository.
2. 切换到自己想要的分支,比如:CentOS-7.0.1406;
3. 进入 docker 目录,下载 centos-*-docker.tar.xz 文件,比如:centos-7.0.1406-20150304_1234-docker.tar.xz

然后找个虚拟机 Linux 系统 (可以考虑微软官方的 WSL Ubuntu) 把刚下载好的 centos-7.0.1406-20150304_1234-docker.tar.xz 弄进去,

如果你是 centos,执行 sudo yum install xz,

如果你是上面提到的微软官方的 WSL Ubuntu 可以执行下面的命令:

sudo apt install xz-utils

然后以上面 centos-7.0.1406-20150304_1234-docker.tar.xz 为例,执行下面的命令:

$ mkdir tmp/
$ sudo tar xf centos-7.0.1406-20150304_1234-docker.tar.xz -C tmp
$ cd tmp
$ sudo tar czvf ../rootfs.tar.gz ./*

然后把生成的 rootfs.tar.gz 从虚拟机 Linux 里面弄出来,

比如说放到 windows 下面的 D:\WSL\CentOS7\ 下面, 接着一定要重命名一下,比如为 CentOS7.exe,

再紧接着去 这里 找个最新的版本,把里面的Launcher.exe 下载下来,

然后放到前面提到的 D:\WSL\CentOS7\ 下面,接着打开 powershell,cd 到 D:\WSL\CentOS7\ 下面,

然后运行 .\CentOS7.exe, 这个命令执行完之后他会生成一个虚拟机文件,不用管它,

最后我们要来添加前面提到的 wsl 自定义发行版的配置了,

下面以 windows 下的 pycharm 2020.2 为例:

先到 windows 的资源管理器下面把 %APPDATA%\JetBrains 粘贴到地址栏里面回车,然后双击 pycharm 2020.2 这个文件夹进去,

再然后找个文本编辑器打开 options 文件夹里面的 wsl.distributions.xml,然后找到里面的 <descriptor></descriptor> 标签同级的地方,

我们以上面配置的 CentOS7.exe 为例,把下面的内容添加进去:

<descriptor>
    <id>CentOS-7</id>
    <microsoft-id>CentOS7</microsoft-id>
    <executable-path>D:\WSL\CentOS7\CentOS7.exe</executable-path>
    <presentable-name>CentOS7.0</presentable-name>
</descriptor>

最后,重启你的 pycharm,就可以在 add python interpreter 的 WSL 选项里面看到你刚刚新增的 CentOS7.0 这个选项了。

All done, Cheers!

[/$]

 

Show Time

下面为了证明我的方式是 ok 的,啥也不说了,直接上截图吧

全网首发如何把 Pycharm 远程解释器设置为 WSL2 CentOS 里面的 python

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2020-09-26发表,共计2650字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(2条评论)
test 评论达人 LV.1
2021-05-20 05:21:45 回复

WSL 2与windows的文件交互速度非常慢。只能使用WSL 1

     未知
    sharp097 博主
    2021-05-20 05:23:36 回复

    @test 

    cd到Linux文件系统呀,在/mnt/d 下面做开发io确实不行