Mac、linux、window这 3 大系统的开发环境搭建推荐、遇到的相关问题的解决方案记录

通用环境

Python 环境

macOS

安装 anaconda

更多请查看 anaconda与jupyter使用与设置

  1. 清华镜像站下载 或者清华镜像站anaconda首页 或者anaconda官网(比较慢),这样这个环境中默认的python就是最新的。

  2. 根据提示完成安装,这时命令行中conda --version 无法执行,

    for anaconda 3 :

    export PATH=~/anaconda3/bin:$PATH
    

    然后通过conda --version 确认

  3. export PATH=~/anaconda3/bin:$PATH 有效时间为这次终端结束,因此应该通过

    sudo nano ~/.bashrc   # bash
    或者
    sudo nano ~/.zshrc    # zsh
    

    修改配置文件,将命令复制保存在文件中,最后通过source .bashrc加载新的配置信息,使得配置立即生效。

  4. 在pycharm设置中搜索 interpreter,添加解释器,选择conda 环境,如果想让新项目默认使用该解释器,勾选【 make available to all projects

卸载官方安装包

不建议自己安装 官网的Python,因为这是典型的安装容易,删除麻烦。提供了安装器,但没有卸载器

我们首先要知道其具体都安装了什么,实际上,在安装 Python 时,其自动生成:

  • Python framework,即 Python 框架;
  • Python 应用目录;
  • 指向 Python 的连接。

对于 Mac 自带的 Python,其框架目录为:/System/Library/Frameworks/Python.framework

而我们安装的 Python,其(默认)框架目录为:/Library/Frameworks/Python.framework

接下来,我们就分别(在 Mac 终端进行)删除上面所提到的三部分,其中x.x为 Python 的版本号。

  1. 删除框架:sudo rm -rf /Library/Frameworks/Python.framework/Versions/x.x

  2. 删除应用目录:sudo rm -rf "/Applications/Python x.x"

  3. 删除指向 Python 的连接:ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/x.x' | awk '{print $9}' | tr -d @ | xargs rm

  4. 删除环境变量$PATH

window

  1. 下载最新python版本对应的anaconda,这样这个环境中默认的python就是最新的

  2. 右键我的电脑—属性—高级系统设置—-高级选项里面有一个环境变量,点击环境变量——系统变量里面 找path——双击path,添加路径,路径间用;隔开,需要添加的路径有三个:F:\Anaconda3;F:\Anaconda3\Scripts;F:\Anaconda3\Library\bin

anaconda的使用

请看anaconda与jupyter使用与设置

pip的使用

pipi清华镜像设置

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

永久使用

方法1:命令设置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

方法2:手动修改

linux下,修改 ~/.pip/pip.conf (没有就创建一个), 修改 index-url至tuna,内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

IDE 配置

pycharm

快捷键

编辑
Shift + Enter:在下方新建行并移到新行行首
Ctrl + /:注释(取消注释)选择的行
Ctrl + Alt + L:格式化代码(与QQ锁定热键冲突,关闭QQ的热键)

查找
alt+F7 查找变量、函数、方法在项目中被使用的位置
Ctrl + Shift + F:高级查找

设置

打开设置,Editor->Code Style

可以看到,默认是System-Dependent,修改为\n

VSCode

设置成中文菜单

vscode默认的语言是英文,简单几步教大家如何将vscode设置成中文。

  1. 按快捷键“Ctrl+Shift+P”。
  2. 在“vscode”顶部会出现一个搜索框。
  3. 输入“configure language”,然后回车。
  4. “vscode”里面就会打开一个语言配置文件。
  5. 将“en-us”修改成“zh-cn”。
  6. 按“Ctrl+S”保存设置。
  7. 关闭“vscode”,再次打开就可以看到中文界面了。

当前文件显示完整路径信息

  1. File->Preferences->Settings
  2. 搜索window.title
  3. 修改 activeEditorShort => activeEditorLong

vscode的title显示路径

推荐扩展

扩展
  • TODO Highlight 高亮TODO提示
  • Rainbow Brackets 高亮括号
  • indent-rainbow 突出显示缩进
  • python Python运行插件,默认按F5后进入DEBUG模式,需要再按一次F5程序才会运行
  • flake8 python语法提示(1.打开终端,输入 pip install flake8 安装flake8;2.在settings.json文件中输入”python.linting.flake8Enabled”: true)
  • Yapf 自动格式化代码

    Yapf是谷歌开源的一个用于格式化Python代码的工具,可以一键美化代码。支持两种规范:PEP8和Google Style.

    1. 打开终端
    2. 输入 “pip install yapf” 安装yapf
    3. 在settings.json文件中输入”python.formatting.provider”: “yapf”
    4. 用一个看看, 按下快捷键 Alt+Shift+F 即可自动格式化代码。
  • Python Docstring Generator 生成注释格式
主题
  • Snazzy Operator
字体
图标
  • Material Icon Theme
  • Material Theme Icons

https://zhuanlan.zhihu.com/p/112431369

终端字体

在Mac 10.13.6下的解决方案(亲测可用),其他版本做参考。

下载安装字体
$cd /Library/Fonts
$sudo git clone https://github.com/abertsch/Menlo-for-Powerline.git

在vscode中设置字体:

"terminal.integrated.fontFamily": "Menlo for Powerline"

SecureCRT

自动验证堡垒机、登录到开发机

个人PC连接开发机都需要先ssh跳板机(堡垒机),再ssh开发机。如果有多台开发机,或者想开多个开发机的窗口,就需要重复地通过跳板机验证,再重复地输入开发机密码。按照以下步骤即可一键登录各个开发机,获得懒癌晚期勋章。

以下是在MAC环境测试通过,window请自行踩坑。

零. 准备工作

1、开启mac的远程登录【必选】,默认情况mac是关闭远程登录功能的

做法:在设置中搜索“远程登录”,就可以快速找到开关。

image-20200623111304638

2、下载SecureCRT 密码:4ekd

有些同学的Secure无法记住密码,可能是因为软件权限不够,无法保存到mac的“钥匙串访问” 中,然后又不提示,莫名地每次都要密码,可以试一下覆盖安装这个软件包。

一.连接跳板机

新建一个本地连接,使用个人PC的账号和密码进行ssh连接,选择记住账号和密码。

image-20200623110846171

可以看到ssh的信息

image-20200623112148515

然后在Logon Actions中添加自动脚本,用于自动ssh连接跳板机,并自动输入密码。

image-20200623112103470

二.设置共享ssh会话

【功能】:使用跳板机时,我们需要登录到跳板机,才能登录到开发机,为了每天只需要第一次输入token密码,以后再登录共享第一次的会话(隐含意思就是不要关闭第一个ssh窗口,否则需要重新输入密码)

【实现】:执行命令vim ~/.ssh/config,加入以下内容

Host *
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p

【验证】:打开一个标签页执行ssh xxx@跳板机.com,输入token,然后按Command+T新建一个窗口,再次执行ssh xxx@跳板机.com,不需要输入密码即可登录跳板机。

【锁住跳板机】:为了避免不小心关掉了跳板机的标签页(一旦关掉,其他标签页的连接将全部断开),secureCRT非常nice地支持锁定标签页,对标签页右键选择Lock Session,设置密码,出现小黄锁就OK啦。

三.登录开发机

与登录跳板机的操作类似,首先新建一个本地连接,session名称设定为开发机名称。

然后设置自动登录脚本:

  1. ssh连接跳板机;
  2. 第二步不再需要跳板机密码,已经共享了ssh,直接ssh目标开发机;
  3. 输入开发机密码;
  4. cd 到指定的目录、、、等其他操作。

image-20200623111924931

Git

换行符问题

  1. Git 的换行符转换策略配置需要与项目同步,不能仅仅是依靠团队规范来约束;
  2. 文件是否需要做换行符转换处理,是由文件本身的属性决定的,需要对每个文件分别对待;
    1. Windows 批处理 bat 文件最好使用 CRLF 作为换行符;
    2. bash 脚本文件应当使用 LF 作为换行符;

这个问题与git-config里面的相关设置有关,主要涉及到三个参数:

  • core.autocrlf
  • core.safecrlf
  • core.eol

core.autocrlf设置是否进行自动转换

# 当添加到暂存区时,自动将CRLF转换成LF;反之,当检出时,自动将LF转换成CRLF
git config --global core.autocrlf true   

# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input   

# 提交检出均不转换
git config --global core.autocrlf false

core.safecrlf 设置是否检查换行符

# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true   

# 允许提交包含混合换行符的文件
git config --global core.safecrlf false   

# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

core.eol

core.autocrlffalse时,设置行结束符的类型,可以是

  • lf
  • crlf
  • native三种,其中native是指平台默认的行结束符。默认的类型是native

个人建议方案

第一种

git config --global core.autocrlf false
git config --global core.safecrlf true  
# 并且把所有文件转换为Linux编码(即LF\n),开启safecrlf检查

也就是让代码仓库使用统一的换行符(LF),如果代码中包含 CRLF 类型的文件时将无法提交,需要用 dos2unix 或者其他工具手动转换文件类型。

第二种

使用 .gitattributes 就完美解决了以上两个问题:

  • .gitattributes 具有最高的优先级,无论你是否设置相关的换行符风格转化属性,你都可以和团队保持一致;
  • 使用 * text=auto 可以定义开启全局的换行符转换;
  • 使用 *.bat text eol=crlf 就可以保证 Windows 的批处理文件在 checkout 至工作区时,始终被转换为 CRLF 风格的换行符;
  • 使用 *.sh text eol=lf 就可以保证 Bash 脚本无论在哪个平台上,只要被 checkout 至工作区,始终被保持 LF 风格的换行符;
  • 使用 *.jpg -text 可以禁止 Git 将 jpg 文件识别为文本文件,从而避免由于换行符转换引入的数据损坏;

首先要在项目里添加.gitattributes文件,可以参考Github help-Dealing with line endingsgitattributes

推荐的现成模板gitattributes

例子:

# 设置默认行为, in case people don't have core.autocrlf set.
* text=auto

# 显示声明想要进行规范化的文本类型。Explicitly declare text files you want to always be normalized and converted to native line endings on checkout.
#*.c text
#*.h text
*.md text
*.js text
*.json text
*.wxss text
*.wxml text

# 保持CRLF的文件。Declare files that will always have CRLF line endings on checkout.
#*.sln text eol=crlf

# 指定哪些文件是二进制文件,禁止转换。Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary

关于 .gitattributes 的详细使用方法,可以参考Git Documentation:gitattributes

参考:

https://www.jianshu.com/p/2a46dfd3705a

https://www.jianshu.com/p/fa4d5963b6c8

http://kuanghy.github.io/2017/03/19/git-lf-or-crlf

window

cmd的乱码

打开设置——> Startup-Environment——> 添加 set LANG=zh_CN.UTF-8

mac

mac 与 samba连接反应慢问题

SMB 的支持有问题,请用 CIFS。
具体方法是在 Finder 里摁 cmd +k,然后把 SMB 那个地址前缀替换成 cifs。
比如原来是 smb://YYY/XXX, 改完后为 cifs://YYY/XXX。

Linux

推荐配置

# 效率命令
alias ..='cd ..'
alias ...='cd ../../'
alias grep="grep --color=auto"
alias qe="qe_biz_bh --sessionconf engine=wing"
alias vi="vim"
alias ls="ls --color=auto -F --time-style '+%Y-%m-%d %H:%M:%S'"
alias l="ls -l"
alias ll="l -h"
alias lt="l -t"
alias la="l -a"
cd_ll()
{
    # 使用‘\’可以调用原始命令命
    if [[ ! $1 ]];then
        ll  
    else
        \cd $1
        ll  
    fi  
}
alias cd='cd_ll'
alias h="head -n 50"
alias hd="hadoopbh fs"
alias hdj="hadoopbh job"
alias awkt="awk -F'\t'"
alias sortt="sort -t $'\t'"
alias wc="wc -l"
bind "\C-f":vi-fword  # Ctrl+f:向前移动一个词(以空格划分)
bind "\C-b":vi-bword  # Ctrl+b:向后移动一个词

alias gits="git status"
alias gita="git add"
alias gitc="git commit -m"
alias gitpush="git push origin master:refs/for/master"

# 命令行提示符
COLOR_GRAY='\[\033[1;30m\]'
COLOR_RED='\[\033[1;31m\]'
COLOR_GREEN='\[\033[1;32m\]'
COLOR_YELLOW='\[\033[1;33m\]'
COLOR_BLUE='\[\033[1;34m\]'
COLOR_MAGENTA='\[\033[1;35m\]'
COLOR_CYAN='\[\033[1;36m\]'
COLOR_WHITE='\[\033[1;37m\]'
COLOR_NONE='\[\033[m\]'
PS1_USER="\u"
PS1_HOST="\H"
PS1_PWD="${COLOR_BLUE}\w${COLOR_NONE} ${COLOR_GREEN}\\t${COLOR_NONE}"
export PS1="${PS1_PWD}\n${PS1_USER}@${PS1_HOST}\\\$ "

bash高效快捷键

bash高效快捷键

30个高效alias

临时取消alias

/usr/bin/clear ## 命令完整路径
\c    ## call alias 前添加\
command ls  ## 或使用command 

删除别名

unalias aliasname
unalias foo

参考

系统设置

设置sudo文件排除某些命令

visudo  # 之后找到如下,修改为如下
work    ALL=ALL,!/bin/chown,!/bin/chgrp,!/sbin/,!/usr/sbin/visudo

sudo免密

让普通用户work具有所有超级用户的权限而又不用输入密码,同时排除一些命令

[root@test ~]# visudo
work ALL=(ALL)NOPASSWD:ALL, !/usr/bin/reboot, !/sbin/reboot, !/sbin/ifconfig, !/sbin/shutdown, !/sbin/route, !/sbin/ip

评论