|
|
|
|
公众号矩阵

如何在你的Android手机上配置 Python 环境?

本文旨在讲解如何在Android平板或手机上搭建Python开发环境,帮助Python初学者有效利用碎片化时间进行学习,从而达到良好的学习效果。

作者:追逐仰望星空来源:今日头条|2021-03-24 20:30

本文旨在讲解如何在Android平板或手机上搭建Python开发环境,帮助Python初学者有效利用碎片化时间进行学习,从而达到良好的学习效果。

对于大部分初学Python的人来说,由于工作、生活等因素常常无法进行连贯、系统的学习。初学者为了利用上下班通勤等碎片化时间进行学习,通常会在平板上观看学习视频并做记录。虽然这种方法很好,但效果还是不如边学边练来得好。

因此,你需要的是这个:

不多说,让我们开始吧!

一、Termux安装与配置

1. 系统要求

Android 7.0以上的平板或手机。这里建议使用兼顾了便携性和屏幕尺寸的8寸平板。

2G以上可用空间。由于需要安装各种软件包,对存储空间的消耗还是比较大的。

2. Termux安装

在安装Termux前,需要了解一下什么是Termux。

Termux 是一款支持 Linux 环境的 Android 终端模拟器APP。你无需对手机进行root或额外设置即可使用。这款APP会在手机中自动安装一个最小化基本系统,并支持使用 APT 包管理工具安装软件。

目前Termux官网(https://termux.com/)建议使用F-Droid进行安装,不再支持通过Google Play进行安装。

主程序Termux下载地址:

  1. https://f-droid.org/repo/com.termux_106.apk 

美化工具Termux:Styling下载地址:

  1. https://f-droid.org/repo/com.termux.styling_29.apk 

3. Termux基本操作

快捷键

  • Ctrl + A -> 将光标移动到行首
  • Ctrl + E -> 将光标移动到行尾
  • Ctrl + C -> 中止当前进程
  • Ctrl + D -> 注销终端会话
  • Ctrl + K -> 从光标删除到行尾
  • Ctrl + U -> 从光标删除到行首
  • Ctrl + L -> 清除终端
  • Ctrl + Z -> 挂起(发送SIGTSTP到)当前进程
  • 音量加 + E -> Esc键
  • 音量加 + T -> Tab键
  • 音量加 + 1 -> F1(音量增加 + 2 → F2…以此类推)
  • 音量加 + 0 -> F10
  • 音量加 + B -> Alt + B,使用readline时返回一个单词
  • 音量加 + F -> Alt + F,使用readline时转发一个单词
  • 音量加 + X -> Alt+X
  • 音量加 + W -> 向上箭头键
  • 音量加 + A -> 向左箭头键
  • 音量加 + S -> 向下箭头键
  • 音量加 + D -> 向右箭头键
  • 音量加 + L -> | (管道字符)
  • 音量加 + H -> 〜(波浪号字符)
  • 音量加 + U -> _ (下划线字符)
  • 音量加 + P -> 上一页
  • 音量加 + N -> 下一页
  • 音量加 + . -> Ctrl + \(SIGQUIT)
  • 音量加 + V -> 显示音量控制
  • 音量加 + Q -> 切换显示的功能键视
  • 音量加 + K -> 切换显示的功能键视图

4. 修改软件源

安装完Termux后,使用如下命令自动替换官方源为清华镜像源:

  1. sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list 
  2. sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list 
  3. sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list 
  4. apt update && apt upgrade 

5. 安装基本组件

在配置Python开发环境前,我们还需要使用如下命令安装一些基本软件包:

  1. pkg install -y zsh curl wget build-essential 
  2. pkg install -y git python nodejs-lts perl ipython 
  3. pkg install -y neovim lazygit ranger fzf 

二、终端配置

1. Shell配置

安装oh-my-zsh

Shell的类型有很多种,Termux下默认使用的是bash,这里使用功能更强大的zsh来代替bash。为了让初学者更好地使用zsh,需要先安装高档大气上档次,狂拽炫酷吊炸天的oh-my-zsh。

  1. sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 

安装过程中,会提示是否切换shell为zsh,输入回车或Y即可。

此外,还需要安装zsh-autosuggestions插件,用于自动补全:

  1. git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 

oh-my-zsh需要使用nano、neovim等终端编辑器修改.zshrc文件来进行配置,在plugins部分添加插件支持:

  1. plugins=( 
  2.     git 
  3.     python 
  4.     colorize 
  5.     zsh-interactive-cd 
  6.     zsh-navigation-tools 
  7.     zsh-autosuggestions 

2. 主题美化

2.1 配色与字体

长按屏幕,点击More,选择Style可以选择配色和字体,推荐使用Neon配色和JetBrains Mono字体,也可以通过修改~/.termux/目录下的colors.properties和font.ttf文件进行自定义。

2.2 主题配置

接下来安装powerlevel10k的主题:

安装

输入如下命令下载powerlevel10k:

  1. git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k 

修改.zshrc文件,将ZSH_THEME="robbyrussell"改为ZSH_THEME="powerlevel10k/powerlevel10k"。

配置

重新打开Termux,输入p10k configure进入powerlevel10k的配置界面。第一次会自动下载默认字体,安装后会自动退出,重新打开Termux即可。

可以根据配置向导的提示,定制适合自己风格的终端界面。

3. 启用vi模式(可选)

Termux命令行中修改已经输入的命令比较麻烦。通过开启vi模式,用户可以像在vi编辑器里一样进行操作。对于vi用户来说,进入这种模式后,编辑和修改命令就显得十分得心应手了。

使用nano、neovim等终端编辑器修改.zshrc文件来进行配置,在plugins部分添加vi-mode项,开启vi模式。在命令行状态下,按Esc键,即可进入vi模式的普通模式。

不过在默认的vi模式存在按键bug,需要在.zshrc文件最后添加如下配置:

  1. # Better searching in command mode 
  2. bindkey -M vicmd '?' history-incremental-search-backward 
  3. bindkey -M vicmd '/' history-incremental-search-forward 
  4.  
  5. # Beginning search with arrow keys 
  6. bindkey "\033[1~" beginning-of-line 
  7. bindkey "\033[4~" end-of-line 
  8. bindkey '^[[3~' delete-char 
  9. bindkey "^[OA" up-line-or-beginning-search 
  10. bindkey "^[OB" down-line-or-beginning-search 
  11. bindkey -M vicmd "k" up-line-or-beginning-search 
  12. bindkey -M vicmd "j" down-line-or-beginning-search 

三、Python包安装与配置

1. 安装环境配置

  1. # 配置pypi源 
  2. pip install pip -U 
  3. pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 
  4.  
  5. # 依赖项 
  6. pip install wheel 
  7. pip install setuptools --upgrade 

2 Python包安装

安装numpy和scipy

  1. # 添加第三方仓库 
  2. curl -LO https://its-pointless.github.io/setup-pointless-repo.sh 
  3. bash setup-pointless-repo.sh 
  4.  
  5. # 从仓库安装numpy scipy 
  6. pkg install -y numpy scipy 

安装lxml

  1. # 安装lxml的依赖项 
  2. pkg install -y libxml2 libxslt 
  3.  
  4. # 安装lxml 
  5. pip install lxml 

安装pillow

  1. # 安装pillow的依赖项 
  2. pkg install -y libjpeg-turbo libtiff  
  3. pkg install -y littlecms tk libwebp libsodium 
  4.  
  5. # 安装pillow 
  6. pip install pillow 

安装matplotlib

  1. # 安装matplotlib的依赖项 
  2. pkg install -y freetype libpng 
  3. pip install kiwisolver cycler  
  4. pip install pyparsing python-dateutil 
  5. # 安装matplotlib 
  6. pip install matplotlib 

安装pandas

  1. # 安装pandas的依赖项 
  2. pip install -y pytz cython 
  3.  
  4. # 安装pandas 
  5. export CFLAGS="-Wno-deprecated-declarations -Wno-unreachable-code" 
  6. pip install pandas 

安装jupyter

  1. # 安装jupyter依赖项 
  2. pkg install -y libzmq libcrypt pkg-config 
  3.  
  4. # 安装jupyter  
  5. pip install jupyter 

待安装完成,输入jupyter notebook启动,将地址复制到浏览器中即可打开Jupyter。

四、IPython和NeoVim配置

对于希望在终端下进行使用的同学,推荐IPython+NeoVim组合。

1. IPython配置

安装IPython

  1. # 安装yapf 
  2. pip install yapf 
  3.  
  4. # 安装Pygments 
  5. pip install pygments 
  6.  
  7. # 安装ipython 
  8. pip install ipython 

创建配置文件

使用ipython profile create命令在

~/.ipython/profile_default/目录下的创建ipython_config.py配置文件。

修改配置文件

使用neovim、nano等终端编辑器修改

~/.ipython/profile_default/目录下的ipython_config.py文件,添加如下配置:

  1. # 配置终端颜色 
  2. c.InteractiveShell.colors = 'Linux' 
  3. c.TerminalInteractiveShell.autoformatter = 'yapf'  
  4. # 配置高亮方案,可通过pygmentize -L styles浏览所有可选配置 
  5. c.TerminalInteractiveShell.highlight_style = 'monokai'  
  6. # 配置魔术命令%editor使用的编辑器 
  7. c.TerminalInteractiveShell.editor = 'nvim' 

2. NeoVim配置

在配置NeoVim前,需要安装pynvim插件,以扩展NeoVim对Python的支持。

  1. pip install pynvim 

创建init.vim文件进行基本配置

在命令行下,通过nvim命令进入NeoVim编辑器,输入:e $MYVIMRC编辑NeoVim配置文件,使用:w进行保存,基本设置如下:

  1. " 一般设置 
  2. set nocompatible "关闭与vi的兼容模式 
  3. set number "显示行号 
  4. set nowrap    "不自动折行 
  5. set showmatch    "显示匹配的括号 
  6. set scrolloff=3        "距离顶部和底部3行" 
  7. set encoding=utf-8  "编码 
  8. set fenc=utf-8      "编码 
  9. set fileencodings=utf-8 
  10. set hlsearch        "搜索高亮 
  11. syntax on    "语法高亮 
  12. set tabstop=4   "tab宽度 
  13. set shiftwidth=4   
  14. set smarttab 
  15. set backspace=indent,eol,start 
  16. set expandtab       "tab替换为空格键 
  17. set fileformat=unix   "保存文件格式 
  18. set splitbelow 
  19. set cmdheight=2 
  20. set completeopt=longest,menu 
  21. set splitright 
  22. set foldmethod=indent 
  23. set foldlevel=99 
  24. " 设置空格为leader键 
  25. let mapleader=" " 

使用vim-plug安装NeoVim插件

vim-plug是一款Vim插件管理工具,支持异步并行,可以快速安装、更新或卸载插件。可以通过如下命令进行安装,或手动下载plug.vim文件,复制到在~/.config/nvim/autoload文件夹中。

  1. curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs \ 
  2.     https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 

使用vim-plug时,需要在init.vim中添加下列代码块。

  1. " vim-plug插件管理 
  2. call plug#begin('~/.config/nvim/plugged'
  3. Plug 'junegunn/vim-plug' 
  4. call plug#end() 

保存后,在普通模式下输入:so %使配置文件生效,再通过:PlugInstall进行安装。

常用插件及设置

下面列举了一下常用插件和基本设置:

  1. call plug#begin('~/.config/nvim/plugged'
  2. Plug 'junegunn/vim-plug' 
  3. " git支持 
  4. Plug 'tpope/vim-fugitive' 
  5. " Python自动缩进插件 
  6. Plug 'vim-scripts/indentpython.vim' 
  7. " 项目管理工具 
  8. Plug 'mhinz/vim-startify' 
  9. " 快速对齐插件 
  10. Plug 'junegunn/vim-easy-align' 
  11. " 当前光标下的单词增加下划线 
  12. Plug 'itchyny/vim-cursorword' 
  13. " 快速选择插件 
  14. Plug 'tpope/vim-surround' 
  15. " 自定义代码片断 
  16. Plug 'honza/vim-snippets' 
  17. " 语法高亮支持 
  18. Plug 'sheerun/vim-polyglot' 
  19. " 主题、状态栏设置 
  20. Plug 'haishanh/night-owl.vim' 
  21. Plug 'vim-airline/vim-airline' 
  22. Plug 'vim-airline/vim-airline-themes' 
  23. Plug 'ryanoasis/vim-devicons' 
  24. " coc扩展 
  25. Plug 'neoclide/coc.nvim', {'branch''release'
  26. " fzf模糊查找 
  27. Plug 'junegunn/fzf', { 'dir''~/.fzf''do''./install --all' } 
  28. Plug 'junegunn/fzf.vim' 
  29. " whichkey快捷菜单 
  30. Plug 'liuchengxu/vim-which-key 
  31. " 浮动窗口支持 
  32. Plug 'voldikss/vim-floaterm' 
  33. " ranger文件管理器支持 
  34. Plug 'kevinhwang91/rnvimr' 
  35. call plug#end() 
  36.  
  37. " 启用标签栏 
  38. let g:airline#extensions#tabline#enabled = 1 
  39. " 支持图标字体 
  40. let g:airline_powerline_fonts = 1 
  41. " 设置状态栏主题 
  42. let g:airline_theme='night_owl' 
  43. " 设置主题 
  44. set termguicolors 
  45. let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" 
  46. let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" 
  47. syntax enable 
  48. colorscheme night-owl 

安装、配置coc.nvim扩展

coc.nvim是一款支持扩展的插件,类似于油猴,可以通过安装扩展,以实现像Vscode一样使用NeoVim,下面列举了Python相关的coc扩展和配置:

  1. " coc扩展 
  2. let g:coc_global_extensions = [ 
  3.       \'coc-json'
  4.       \'coc-pyright'
  5.       \'coc-snippets'
  6.       \'coc-xml'
  7.       \'coc-explorer'
  8.       \'coc-prettier'
  9.       \'coc-highlight'
  10.  
  11. " 使用tab键进行补全选择 
  12. inoremap <silent><expr> <TAB> 
  13.       \ pumvisible() ? "\<C-n>" : 
  14.       \ <SID>check_back_space() ? "\<TAB>" : 
  15.       \ coc#refresh() 
  16. inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" 
  17.  
  18. function! s:check_back_space() abort 
  19.   let col = col('.') - 1 
  20.   return !col || getline('.')[col - 1]  =~# '\s' 
  21. endfunction 
  22.  
  23. " 使用回车进行补全选择 
  24. inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() 
  25.                               \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" 
  26.  
  27. " Highlight the symbol and its references when holding the cursor
  28. autocmd CursorHold * silent call CocActionAsync('highlight'
  29.  
  30. Add `:Format` command to format current buffer. 
  31. command! -nargs=0 Format :call CocAction('format'
  32.  
  33. Add `:Fold` command to fold current buffer. 
  34. command! -nargs=? Fold :call     CocAction('fold', <f-args>) 
  35.  
  36. Add `:OR` command for organize imports of the current buffer. 
  37. command! -nargs=0 OR   :call     CocAction('runCommand''editor.action.organizeImport'
  38.  
  39. " 添加状态栏显示支持 
  40. set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} 
  41.  
  42. " 启用Prettier进行文件自动格式化 
  43. command! -nargs=0 Prettier :CocCommand prettier.formatFile 
  44. let g:prettier#autoformat = 1 
  45.  
  46. " 设置Coc Search 
  47. nnoremap <leader>? :CocSearch <C-R>=expand("<cword>")<CR><CR> 

此外,coc扩展可以通过在~/.config/nvim/文件夹中创建coc-settings.json文件来进行配置:

  1.     "python.defaultInterpreterPath""/data/data/com.termux/files/usr/bin/python"
  2.     "python.pythonPath""/data/data/com.termux/files/usr/bin/python"
  3.     "python.linting.pylintEnable":true
  4.     "python.formatting.provider""yapf"
  5.     "python.formatting.yapfArgs": [ 
  6.         "--style"
  7.         "{SPACES_AROUND_POWER_OPERATOR: True, SPACES_BEFORE_COMMENT: 1}" 
  8.     ], 
  9.     "explorer.width": 38, 
  10.     "explorer.quitOnOpen"true
  11.     "explorer.sources": [ 
  12.         { 
  13.             "name""buffer"
  14.             "expand"false 
  15.         }, 
  16.         { 
  17.             "name""file"
  18.             "expand"true 
  19.         } 
  20.     ], 
  21.     "explorer.file.column.indent.indentLine"true
  22.     "explorer.file.showHiddenFiles"true
  23.     "explorer.icon.enableNerdfont"true
  24.     "explorer.keyMappingMode""none"
  25.     "explorer.buffer.showHiddenBuffers"false
  26.     "explorer.keyMappings.global": { 
  27.         "o": ["wait""expanded?""collapse""expand"], 
  28.         "<cr>": ["wait""expandable?""cd""open"], 
  29.         "?""help"
  30.         "q""quit" 
  31.     }, 
  32.     "coc.preferences.formatOnSaveFiletypes": ["*"], 
  33.     "prettier.printWidth": 100, 
  34.     "prettier.eslintIntegration"true
  35.     "prettier.disableLanguages": [], 
  36.     "prettier.formatterPriority": 1, 
  37.     "prettier.useTabs"true
  38.     "prettier.trailingComma""all"
  39.     "prettier.singleQuote"false
  40.     "prettier.tabWidth": 4 

配置vim-which-key

vim-which-key是一款快捷键映射插件,可以通过简单的设置进行快捷键自定义功能的实现。下面列举了vim-which-key的简单设置:

  1. " 将空格设置为whichkeyleader键 
  2. nnoremap <silent> <leader> :WhichKey '<Space>'<CR> 
  3.  
  4. " whichkey基本配置 
  5. let g:which_key_timeout = 100 
  6. let g:which_key_display_names = {'<CR>''↵''<TAB>''⇆'
  7. let g:which_key_map =  {} 
  8. let g:which_key_sep = '→' 
  9. let g:which_key_use_floating_win = 0 
  10. let g:which_key_max_size = 0 
  11.  
  12. " 呼出whichkey时隐藏状态栏 
  13. autocmd! FileType which_key 
  14. autocmd  FileType which_key set laststatus=0 noshowmode noruler 
  15.   \| autocmd BufLeave <buffer> set laststatus=2 noshowmode ruler 
  16.  
  17. " 自定义whichkey 
  18. let g:which_key_map['?'] = 'search word' 
  19. let g:which_key_map['/'] = [ ':call Comment()'                                 , 'comment' ] 
  20. let g:which_key_map['.'] = [ ':e $MYVIMRC'                                     , 'open init' ] 
  21. let g:which_key_map[';'] = [ ':Commands'                                       , 'commands' ] 
  22. let g:which_key_map['e'] = [ ':CocCommand explorer --toggle --sources=file+'   , 'explorer' ] 
  23. let g:which_key_map['n'] = [ ':let @/ = ""'                                    , 'no highlight' ] 
  24. let g:which_key_map['q'] = [ '<Plug>(coc-fix-current)'                         , 'quickfix' ] 
  25. let g:which_key_map['u'] = [ ':UndotreeToggle'                                 , 'undo tree'
  26. let g:which_key_map['t'] = [':FloatermNew --wintype=normal --height=6'        , 'terminal'
  27. let g:which_key_map['r'] = [ ':FloatermNew ranger'                            , 'ranger'
  28. let g:which_key_map['f'] = [':FloatermNew fzf'                               , 'fzf'
  29. let g:which_key_map['g'] = [':FloatermNew lazygit'                           , 'git'
  30. let g:which_key_map['p'] = [':FloatermNew python'                            , 'python'
  31. call which_key#register('<Space>'"g:which_key_map"

在NeoVim中运行Python脚本

可以通过在NeoVim中添加自定义功能,从而在编写时运行当前Python脚本。

  1. "在普通模式下,按r来运行Python脚本 
  2. noremap r :call RunPython()<CR>  
  3. func! RunPython() 
  4.     exec "w" 
  5.     if &filetype == 'python' 
  6.         exec "!time python %" 
  7.     endif 
  8. endfunc 

五、结语

本文主要分享了一下在Android平板上配置Python学习环境的经验,相关配置文件请参见以下链接:

https://gitee.com/knightz1224/termux_config,谢谢大家支持!

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

7人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

36人订阅学习

数据中心和VPDN网络建设案例

数据中心和VPDN网络建设案例

漫画+案例
共20章 | 捷哥CCIE

230人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微