开发环境搭建记录

整理配置开发环境时遇到的坑和解决方案,不定期更新。

VS Code 配置

VS Code的强大众所周知,搭配上插件足够满足基本上常用的开发需求。在VS Code中使用Interactive Python几乎可以替代很多Jupyter Notebook的功能。

更新:2019/10/09:VS Code新增对Jupyter Notebook的原生支持。

VS Code 插件

这里记录目前使用的插件:

  1. Python:
    Microsoft原生支持的Python插件。
  2. C++
    Microsoft原生支持的C++插件。
  3. Anaconda Extension Pack
    Microsoft对Anaconda的原生拓展,可以更多地对第三方库进行语法高亮,提示等。安装后会同步安装YAML支持,目前还没有使用过,可以先卸载。
  4. Vim
    使用Vim键位,不必多说。
  5. vscode-icons
    优化图标展示,更加醒目直观。
  6. One Dark Pro
    目前用过的最好的配色之一。
  7. Code Runner
    必备品,直接运行常见的语言,编译调试利器。
  8. Bracket Pair Colorizer 2
    彩色显示括号。
    已经使用第二版。
    用回第一版,在第二版中会导致中文输入极其卡顿。
  9. GitLens – Git supercharged
    最强大的Git插件,搭配VS Code原生Git可以非常爽快的进行版本管理。有时候Gitlens会和outlines冲突,导致outlines无法正常显示,目前问题似乎已经得到修复。
  10. Markdown All in One
    顾名思义。写.md格式文档时的全家桶。支持导出HTML格式。
  11. TODO Highlight
    高亮TODO标签,便于对代码Todo List的识别。(但是似乎不支持XXX的高亮)
  12. Todo Tree
    树形展示所欲的TODO标签,和TODO Highlight结合使用的效果非常感人。
    2019-12-24更新:在Linux下使用该插件后发现Network和Load占用全满,严重影响开发效率,目前暂停使用。已向开发者提交Issue。
  13. C++ Intellisense
    C++代码自动补全。
  14. Include Autocomplete
    自动补全C++头文件引用。
  15. Excel Viewer
    可以在VS Code中查看Excel内容,特别是对CSV文件的查看非常友好,甚至能使用筛选等功能。
  16. Path Intellisense
    对文件路径的自动识别。
  17. LaTeX Workshop
  18. TabOut
    使用Tab跳出括号引号等,不过使用Vim的情况下一般用不到。
  19. Better Comments
    增强Comments的阅读体验。
  20. TabNine
    结合使用者的代码输入量自动联想识别,使用了人工智能算法,但是对内存会有一些消耗。
  21. markdownlint
    提供Markdown写作时格式的静态检查。
  22. Remote Development
    微软原生提供为VSCode进行远程开发的插件,会安装所有远程开发相关的插件,搭配WSL非常好用。
  23. Monokai Pro
    经典Monokai配色,提供多种背景色和独特的文件图标

其他配置

  • 优先使用Fira Code字体,同时使用更纱黑体(Microsoft Store提供下载),Consolas, DejaVu Sans Mono, Ubuntu Mono, Cascadia, Hack, Source Code Pro等字体
  • 使用flake8 + yapf进行代码检查和格式调整,同时需要关闭pylint
  • 设置单行长度120
{
    "workbench.colorTheme": "Monokai Pro",
    "workbench.iconTheme": "Monokai Pro Icons",
    "python.dataScience.sendSelectionToInteractiveWindow": true,
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": ["--max-line-length=120"],
    "python.formatting.provider": "yapf",
    "python.formatting.yapfArgs":["--style", "{column_limit=120}"],
    "python.linting.pylintEnabled": false,
    "editor.fontSize": 12,
    "editor.rulers": [120],
    "editor.fontFamily": "'Fira Code', Consolas, 'Cascadia Code', 'Sarasa Mono SC'",
    "editor.fontLigatures": true,
    "editor.fontWeight": "bold",
    "code-runner.runInTerminal": true,
    "code-runner.executorMap": {
        "c": "cd $dir && gcc -std=c11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ -std=c++11 -Wall $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "python": "python -u",
        "julia": "julia"
    },
    "editor.lineNumbers": "relative",
    "vim.hlsearch": true,
    "vim.statusBarColorControl": true,
    "vim.textwidth": 120,
    "vim.useSystemClipboard": true,
    "workbench.colorCustomizations": {
        "statusBar.background": "#005f5f",
        "statusBar.noFolderBackground": "#005f5f",
        "statusBar.debuggingBackground": "#005f5f"
    },
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.latex.tools": [
        {
            // 编译工具和命令
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "xelatex",
            "tools": [
                "xelatex"
            ],
        },
        {
            "name": "pdflatex",
            "tools": [
                "pdflatex"
            ]
        },
        {
            "name": "xe->bib->xe->xe",
            "tools": [
                "xelatex",
                "bibtex",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "pdf->bib->pdf->pdf",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        }
    ]
}

Python

Jupyter Notebook

2021/06更新:现在Jupyter Lab内置了很多Jupyter Notebook中插件的功能,可以全面转向Jupyter Lab。

Jupyter Notebook 插件配置

Jupyter Notebook 远程环境

  • 如果需要在远程服务器上打开Jupyter并在本地浏览器界面打开,需要通过SSH隧道使用端口映射,具体方法如下:
    • 在本地创建端口映射: ssh -N -f -L localhost:8888:localhost:8889 -p 22 remote_user@remote_host
      这里,-N表示不执行其他命令,仅做端口转发,-f表示后台运行,-L表示本地映射转发,选项值代表ssh客户端和服务端转发的端口,这里选取8888为本地jupyter监听端口。remote_user@remote_host 用实际的远程帐户和远程地址替换。
    • 在远程服务器打开Jupter Notebook:jupyter notebook --no-browser --port=8899,这里的port使用刚刚配置的远程端口。
    • 通常,这个时候已经可以在本地正常使用Jupyter,但是如果出现如下报错:
      channel 2: open failed: connect failed: Connection refused,则需要在远程服务器端命令加上--ip=remote_host填入远程服务器ip。

C++

VS Code

Windows开发环境

Linux开发环境

C++11问题

Git

在使用Git进行版本管理时,容易误提交敏感数据或者较大的文件。这些文件即使删除后,仍然会被保留在版本库中。同时,Git并不是非常适用于对于二进制文件的管理,加上网络限制,上传例如PDF等文件会导致Push和Pull时间过长甚至超时报错。针对这些问题,如果需要彻底删除历史提交的文件,需要使用额外的指令。

在使用GitHub管理代码时,有时会遇到代码无法pull或push的情况并报连接超时。解决方案如下:

Windows Subsystem for Linux

踩坑

  • 在Windows10 x64位下安装。可选多种Linux发行版,目前安装Ubuntu18.04 直接安装Microsoft Store下不带版本号的发行版即可。

  • 创建用户后默认会使用root用户,如果需要切换默认用户,需要在PowerShell中使用命令:

    <ubuntu1804.exe> config --default-user <user_name>
    

    注意ubuntu1804.exe需要根据当前使用的Linux发行版填写,否则会报错。lxrun是旧版,已无法使用。
    如果是安装不带版本号的ubuntu,则不会出现上述情况。

  • 系统出现的蜂鸣声(和Vim无关):

    sudo vim /etc/inputrc
    

    # set bell-style none的注释去除。

  • 如果直接从windows scp _vimrc文件,则会出现vim E492: Not an editor command: ^M报错,这是Unix和Windows下对于换行符的不兼容造成,因此需要将vimrc配置为Unix格式。
    使用vim打开.vimrc,输入:set fileformat=unix即可。

  • Vim出现的蜂鸣:
    如果在.vimrc中已经有set noerrorbells仍有蜂鸣,则加入set belloff=all

  • Powershell下右键会直接粘贴,这是由于Powershell的属性-选项中勾选了快速编辑模式。将其取消,同时勾选将Ctrl+Shift+C/V用作复制/粘贴的快捷键

  • apt-get和pip使用清华镜像:
    Ubuntu 18.04 LTS 默认安装python3.6.9,但是没有pip3,因此需要先更新apt-get源,然后安装pip3,然后再更新pip3源。

    Ubuntu 镜像
    Ubuntu apt-get和pip源更换

  • 进入WSL后查看git发现所有的文件都被修改,原因是行尾产生问题:

    https://github.com/Microsoft/WSL/issues/184

    解决方法是在WSL里执行

    git config --global core.autocrlf false
    git config --global core.safecrlf true
    
  • 如果使用zsh,执行chsh -s /bin/zsh不能将默认shell替换为zsh,在打开WSL时,默认shell仍然是bash。解决方案是在~/.bashrc中添加bash -c zsh,在启动WSL同时打开zsh。目前放弃zsh。

  • htop不能使用问题:参考微软WSL在GitHub上的issuehtop not working #25
    跳转至WSL Ubuntu 20.04 - gpg: can’t connect to the agent: IPC connect call failed #5125,查看@Kagami在2020/04/25的comments,使用如下命令可以解决:

sudo add-apt-repository ppa:rafaeldtinoco/lp1871129
sudo apt update
sudo apt install libc6=2.31-0ubuntu8+lp1871129~1 libc6-dev=2.31-0ubuntu8+lp1871129~1 libc-dev-bin=2.31-0ubuntu8+lp1871129~1 -y --allow-downgrades
sudo apt-mark hold libc6

Latex工具链

可以方便的写LaTeX文件,同时完成编译预览等

使用VSCode编写LaTeX 知乎
Ubuntu 使用 Latex,使用VS Code 中文 知乎

经过使用,事实证明直接sudo apt-get install texlive-full会下载大量无效的工具(如各种用不到的语言包,xterm这个终端模拟器等),因此,目前看来只需要安装必要的库即可:

sudo apt-get install texlive-latex-base
sudo apt-get install latex-cjk-all
sudo apt-get install texlive-latex-extra
sudo apt-get install texlive-xetex

使用Latex编写中文文档时,如果需要调整字体,会是一件比较痛苦的事,经过反复摸索,目前可以使用的解决方案如下:

基于Ubuntu 20.04 LTS (WSL), VsCode。

编译环境使用上文所说的环境,同时需要保证要使用的字体可以被正常识别。网上的说法是在Windows系统中可以使用命令fc-list查看当前系统使用的字体,但是在Win10上并不能使用,在Ubuntu系统上可以正常运行,因此选择使用Ubuntu环境。接着步骤为:

  1. /usr/share/fonts/路径下可以建立一个新的文件夹,存放自己的字体格式(只需要.ttf格式即可),如果是WSL可以将Windows字体复制过去,Windows字体路径为/mnt/c/Windows/Fonts
  2. 在保存新字体的文件夹中给所有文件开放可执行权限 chmod 755 *
  3. 接着根据当前目录下的字体建立scale文件sudo mkfontscale
  4. 接着建立dir文件sudo mkfontdir
  5. 然后运行sudo fc-cache -fv

将Windows下的字体库迁移到Ubuntu下使用SinaBlog

之后再使用fc-list可以找到已安装的字体,例如Consolas, Fira Code, Sarasa等:

$ fc-list | grep Consolas
/usr/share/fonts/win10/consolai.ttf: Consolas:style=Italic
/usr/share/fonts/win10/consolaz.ttf: Consolas:style=Bold Italic
/usr/share/fonts/win10/consola.ttf: Consolas:style=Regular
/usr/share/fonts/win10/consolab.ttf: Consolas:style=Bold
$ fc-list | grep Sarasa
/usr/share/fonts/win10/sarasa-ui-sc-light.ttf: Sarasa UI SC,更纱黑体 UI SC,Sarasa UI SC Light,更纱黑体 UI SC Light:style=Light,Regular
/usr/share/fonts/win10/sarasa-mono-sc-bolditalic.ttf: Sarasa Mono SC,等距更纱黑体 SC:style=Bold Italic
/usr/share/fonts/win10/sarasa-mono-sc-lightitalic.ttf: Sarasa Mono SC,等距更纱黑体 SC,Saras
 Mono SC Light,等距更纱黑体 SC Light:style=Light Italic,Italic
/usr/share/fonts/win10/sarasa-term-sc-lightitalic.ttf: Sarasa Term SC,Sarasa Term SC Light:style=Light Italic,Italic
/usr/share/fonts/win10/sarasa-mono-sc-bold.ttf: Sarasa Mono SC,等距更纱黑体 SC:style=Bold

Latex中需要使用的是.ttf后的字体名,必须保证完全相同,包括大小写。

在导言区导入:

\documentclass[12pt, a4paper]{article}
\usepackage{ctex}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{graphfig}
\usepackage{theorem}
\usepackage{hyperref}
\usepackage{geometry}
\usepackage{verbatim}
\usepackage{listings}
\usepackage{fontspec}
\setsansfont{Consolas}
\setmonofont{Fira Code}
\setCJKmainfont{Sarasa Term SC}
\setCJKsansfont{Sarasa Term SC}
\setCJKmonofont{Sarasa Mono SC}

对于修改字体必备的是fontspec包,然后设置默认字体即可。

在Windows中,安装字体需要右键选择对所有用户安装。由于fc-list无法使用,在Win10中看到的字体不一定是全局的,使用win+r调出控制台输入fonts可以看到系统中安装的字体,对应地址为C:\Windows\Fonts

同时也可以参考:

XeLaTeX编译CTEX报系统字体错误CSDN

常用工具安装

在安装了WSL之后,开发环境完全适配Windows,常用的工具链直接在WSL中进行即可。由于Linux强大的包管理功能和更友好的开发环境,很多在Windows上安装不顺的功能可以非常轻松的完成。

TaLib

2022/03更新

TaLib在Win10系统的安装

Python 量化:Ta-Lib 安装(win10)知乎

TaLib在64位Windows安装非常繁琐 ,因此使用官方推荐的方式在WSL上安装:

Ta-Lib

先下载源码进行编译,然后安装库即可:

$ wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
$ tar -xzvf ta-lib-0.4.0-src.tar.gz 
$ cd ta-lib
$ sudo ./configure --prefix=/usr
$ sudo make
$ sudo make install
$ sudo pip3 install Ta-Lib

MPI

MPI安装的资料众说纷纭,目前看来最方便的方式是:

$ sudo apt-get install mpich  # MPICH和OpenMPI对比下,MPICH安装更加简单
$ which mpicc  # 确认是否加入环境变量,如果没有需要加入
$ sudo pip3 install mpi4py

测试如果from mpi4py import MPI没有报错,则说明安装成功。

自可乐 简书

然后写一个Python脚本:

# mpi_helloworld.py
from mpi4py import MPI

comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
node_name = MPI.Get_processor_name() # get the name of the node

print 'Hello world from process %d at %s.' % (rank, node_name)

在Shell里执行:

$ mpiexec -n 2 python3 mpi_helloworld.py

正常运行则说明安装完成。

.vimrc配置

" General {{{
" 取消兼容模式
set nocompatible
" set nobackup
set noswapfile
set noundofile
set noerrorbells
set history=1024
set autochdir
" 自动更新被修改文件
set autoread
set whichwrap=b,s,<,>,[,]
set nobomb
set backspace=indent,eol,start whichwrap+=<,>,[,]
set clipboard+=unnamed
set fileencodings=utf-8,gbk2312,gbk,gb18030,cp936
set encoding=utf-8
set fencs=utf8,gbk,gb2312,gb18030
" set langmenu=zh_CN
" 使用拼写检查,[s ]s进行错误跳转,z=显示提示修改
" set spell spelllang=en_us
let $LANG = 'en_US.UTF-8'
" }}}
" GUI {{{
" colorscheme molokai
colorscheme desert
set laststatus=2
" 使用相对行号
set number relativenumber 
" set lines=50 columns=120
set textwidth=120
set guioptions-=T
set guioptions-=m
set guioptions-=L
set guioptions-=r
set guioptions-=b
set guioptions-=e
set laststatus=2
" set guifont=Consolas:h14
set showmode
set showcmd
set wrap
set wrapmargin=2
set scrolloff=5
" 打开语法高亮
syntax enable
syntax on
" }}}
" Format {{{
" 256set t_Co=256
set autoindent
set smartindent
set expandtab
set tabstop=4
set softtabstop=4
" 根据缩进折叠
" set foldmethod=indent
" 根据标记折叠
set foldmethod=marker
set foldlevel=0
set shiftwidth=4
set ruler
set showmatch
" 高亮显示搜索内容
set hlsearch
" 搜索过程中动态显示匹配内容
set incsearch
set linebreak
set ignorecase
set smartcase
filetype on
" 根据文件类型决定缩进
filetype indent on
" }}}

Win10远程桌面连接ubuntu20.04

经过多次尝试多次踩坑后发现最好的解决方案为:

  1. 系统设置-共享-屏幕共享 改为活动
  2. 安装xrdp
    sudo apt-get install xrdp
    
  3. 安装dconf-editor并设置
    sudo apt-get install dconf-editor
    
  4. 启动软件“dconf-editor",打开之后,依次展开org->gnome->desktop->remote-access,然后取消requlre-encryption的勾选
  5. 进入Windows,开启远程桌面,填入IP登陆,选择vnc-any,填入IP和共享设置的密码。

ubuntu20.04远程桌面这样装CSDN

另一种方案是再配置xubutnu桌面环境,使用xRDP协议:

Windows 远程桌面连接Ubuntu操作以及各种问题解决CSDN
win10如何远程桌面访问Ubuntu18.04版本?CSDN
[安装教程]使用Windows10远程桌面连接访问UbuntuCSDN

Miniconda

安装Miniconda后,需要自己安装的第三方库:

pip install ipython numpy pandas matplotlib scikit-learn scipy cython dask flake8 flask tqdm bs4 requests statsmodels sympy tabulate tables xgboost gplearn h5py joblib numba prettytable pymssql pymysql redis reportlab yapf plotly pyarrow seaborn sqlalchemy gevent paramiko fabric colorama
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值