Win10构建Python全栈开发环境With WSL

在学习Python全栈过程中,随着后面地深入,进入实际项目地开发阶段后,越发地发现,项目要使用的第三方软件(redis git等)或者外界(支付宝开放平台/微信开放平台)联系越来越多,自己构建一个开发web服务,以及Python多版本切换问题(pyenv只支持在类linux环境)。于是对linux依赖也越多。自己也在阿里云买了一个ECS,但是本地电脑也需要一个linux环境,于是乎发现了WSL。然后在网上查了很多WSL构建各种开发个人电脑开发环境的文章,借此文总结记录一番。为什么不用mac:买不起;还有种草surface pro了

博文图片挂了临时解决办法

启动WSL

  • 可google有很多

  • 选择Ubuntu发行版系统

    其它评分好像很低。也比较熟悉

  • 启动后会先安装,然后提示创建一个新系统的用户名和密码,注意这个用户不是root权限用户。但是有sudo执行权限。sudo -i。

  • 从win store 安装的这个系统,打开后的命令终端是太丑,所以网络上大多都没有使用。

总结

最后,我实在不想自己总结了,因为有人给我们总结的已经非常非常好了,直接跳转去学习吧《Dev on Windows with WSL

对《Dev on Windows with WSL》的补充

'文章'在下文都是特指《Dev on Windows with WSL》

  • 文章中的三种terminal (Powershell,hyper, terminus) 都是提到了使用特定的字体。因为oh-my-zsh插件中如果使用powerlevel9k主题,对于powerlevel9k主题是要依赖很多icon字体的,这些字体一般的字体如微软雅黑等,都是没有特殊icons的,要单独安装字体。推荐的是nerdfonts,nerdfonts算是一个补丁字体,nerdfonts官网提供了打了nerdfonts补丁的很多种类完整字体,选择你喜欢的下载,然后安装即可。然后就可以在三种terminal中设置字体为我们下载安装的字体了。具体使用见文章
  • 博主还提到了一个powerline字体,这个也是类似nerdfonts,是补丁字体,powerline也提供了这些字体的安装,但是powerline项目文档没提供windows端的补丁字体的安装,但是网上有人给出了安装过程,参考How to install Powerline fonts in Windows 按照文章步骤一步一步就能安装上powerline字体的各种集合了。注意powerline字体是powerlevel9k指定的,其实powerlevel9k是兼容使用nerdfonts的。毕竟设置的特殊icon字符都是已unicode编码,只要编码能对了上一个icon字符即可。需要注意:使用nerdfont的powerlevel9k需要配置一个配置选项:

    文章作者也提供了自己的配置,里面也有这个选项的设置。
  • 对于wsl的每一个用户都需要配置安装自己的oh-my-zsh。
  • 对于terminus在设置是千万不要点击'dock the terminal',这里有一个bug,会让terminus不显示。解决办法:issue里面的办法试了没用,我自己有一个办法:利用window的分屏,拖动一个应用到右边框,然后会提示左右分屏,然后选择左边屏幕程序,这时候就有terminus,选择terminus,这样terminus就神奇的出现了。
  • 这里有一个新认知:terminal程序的字体,要和其连接的shell传输到terminal端的字符要匹配上,oh-my-zsh发送了一些icon font的Unicode字符给terminal,这时候的terminal是解析不出来的,会乱码一样显示一个方框,这是如果terminal安装了icon font字体,那么termianl就能正常显示了。
  • 注意,最好安装的任何东西都是通过normal user 账号安装操作,需要提升权限用sudo,因为只有这个normal用户的bash或zsh的环境变量PATH才包含了windows系统的*.exe程序。
  • 建议:node.js 通过nvm安装;python 通过 pyenv安装;

    至于redis/mysql安装,google ubuntu安装reids和mysql就一抓一大把,我的博客有详细redis介绍编译安装,读者可以参考。
  • 其实使用了oh-my-zsh后感觉每次提示行显示出来都会比较慢。所以还是需要效果好看影响了性能,有时间再换个主题优化一下。

附:我的zsh效果图和配置

  • 效果图:
  1. normal user:



  2. root user:

  3. 结合terminal效果:

  • 配置:

    都是在~/.zshrc中有关powerlevel9k等配置,增加这些配置选项即可:
  1. normal user:
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon root_indicator context dir vcs status)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
POWERLEVEL9K_DISABLE_RPROMPT=true
POWERLEVEL9K_STATUS_CROSS=true
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$'\uE0B4'
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$'\uE0B6'
POWERLEVEL9K_MODE=nerdfont-complete
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_first_and_last
# POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="╭"
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
# POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="╰\u276F\u276F\u276F "
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="\u276F\u276F\u276F "
POWERLEVEL9K_OS_ICON_FOREGROUND="black"
POWERLEVEL9K_OS_ICON_BACKGROUND="magenta"
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND="black"
POWERLEVEL9K_CONTEXT_DEFAULT_FOREGROUND="black"
POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND="cyan"
ZSH_THEME="powerlevel9k/powerlevel9k" # # Change ls colours
LS_COLORS="ow=01;36;40" && export LS_COLORS
#
# # make cd use the ls colours
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
autoload -Uz compinit
compinit
  1. root user:

    root 和 normal用户不一样就是 POWERLEVEL9K相关的配置了,其它配置都一样。
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon root_indicator context dir vcs status)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
POWERLEVEL9K_DISABLE_RPROMPT=true
POWERLEVEL9K_STATUS_CROSS=true
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$'\uE0B4'
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$'\uE0B6'
POWERLEVEL9K_MODE=nerdfont-complete
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_first_and_last
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="\u276F\u276F\u276F "
POWERLEVEL9K_OS_ICON_FOREGROUND="black"
POWERLEVEL9K_OS_ICON_BACKGROUND="magenta"
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND="black"
POWERLEVEL9K_CONTEXT_DEFAULT_FOREGROUND="black"
POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND="cyan"
POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND="hotpink"
POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND="yellow1"
POWERLEVEL9K_ROOT_INDICATOR_BACKGROUND="hotpink"
POWERLEVEL9K_ROOT_INDICATOR_FOREGROUND="grey3"
POWERLEVEL9K_ROOT_ICON=$'\uf21e'

补充下python virtualenv环境

效果图:

配置修改:

~/.zshrc 文件修改
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(virtualenv os_icon root_indicator context dir vcs status ) # 添加virtualenv plugins=(
# git
zsh-autosuggestions
virtualenv # 添加插件
)

Win10构建Python全栈开发环境With WSL的更多相关文章

  1. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

  2. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  3. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  4. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  5. Python全栈开发【基础一】

    Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...

  6. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  7. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  8. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  9. python全栈开发从入门到放弃之迭代器生成器

    1.python中的for循环 l = [1,2,3,4,5,6] for i in l: #根据索引取值 print(i) 输出结果: 1 2 3 4 5 6 2.iterable  可迭代的 可迭 ...

随机推荐

  1. shell脚本头,#!/bin/sh与#!/bin/bash的区别.

    因为今天写了个小脚本,死活不成功,总是报文件或者目录不存在,问了一下我们马同学的正常写法,发现只有脚本头的区别,也就是今天本文要讲的#!/bin/sh与#!/bin/bash. 本文参考:https: ...

  2. adSage :2013年教育行业搜索引擎投放分析报告

  3. 接口调用(发送http请求)

    // 向对应的url地址发送http请求, 并获取响应的json字符串    public String getHttpResponse(String url) {        // result用 ...

  4. 队列Queue和栈

    1.队列Queue是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式,只能从线性表的一段添加(offer)元素, 从另一段取出(poll)元素,队列遵循先进先出的原则. 2.J ...

  5. Collection、List、Set集合概括

    1.Collection是一个接口,定义了集合相关的操作方法,其有两个子接口List和Set. 2.List和Set的区别    List是有序的可重复集合,Set是无序的不可重复集合. 3.集合持有 ...

  6. Mac命令行

    参考:http://www.cnblogs.com/-ios/p/4949923.html 必读 涵盖范围: 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处.本文致力于做到覆盖面广(尽 ...

  7. ngnix 是什么

    Nginx系列(一)--nginx是什么? 发表于2015/7/1 7:57:58  14347人阅读 分类: Nginx Java 一.介绍 Nginx是一个高性能的HTTP和反向代理服务器,也是一 ...

  8. Thread部分总结以及小例子

    Thread总结:一直以来用thread比较多,一般会在同步以及ui中用到.以下对于经常用作为简单介绍.一 实现方法: 一种直接new thread,另外一种是实现Runnable接口,在创建thre ...

  9. Web测试——翻页功能测试用例

    参考:https://wenku.baidu.com/view/e6462707de80d4d8d15a4f1e.html?rec_flag=default&mark_pay_doc=2&am ...

  10. 一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot

    6: 这是一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot. Giraphe是基于Spring Boot的CMS框架. https://github.co ...