如何在手机上配置 Python 环境

Python中文社区

共 12513字,需浏览 26分钟

 ·

2021-02-24 19:44

本文旨在讲解如何在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下载地址:
https://f-droid.org/repo/com.termux_106.apk


  • 美化工具Termux:Styling下载地址:
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后,使用如下命令自动替换官方源为清华镜像源:
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
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
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
apt update && apt upgrade

5. 安装基本组件

在配置Python开发环境前,我们还需要使用如下命令安装一些基本软件包:
pkg install -y zsh curl wget build-essential
pkg install -y git python nodejs-lts perl ipython
pkg install -y neovim lazygit ranger fzf

二、终端配置

1. Shell配置

  • 安装oh-my-zsh
Shell的类型有很多种,Termux下默认使用的是bash,这里使用功能更强大的zsh来代替bash。为了让初学者更好地使用zsh,需要先安装高档大气上档次,狂拽炫酷吊炸天的oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装过程中,会提示是否切换shell为zsh,输入回车Y即可。
此外,还需要安装zsh-autosuggestions插件,用于自动补全:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

oh-my-zsh需要使用nanoneovim等终端编辑器修改.zshrc文件来进行配置,在plugins部分添加插件支持:
plugins=(
git
python
colorize
zsh-interactive-cd
zsh-navigation-tools
zsh-autosuggestions
)

2. 主题美化

2.1 配色与字体

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

2.2 主题配置

接下来安装powerlevel10k的主题:
  • 安装
输入如下命令下载powerlevel10k:
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即可。
可以根据配置向导的提示,定制适合自己风格的终端界面。
图片来源:romkatv/powerlevel10k

3. 启用vi模式(可选)

Termux命令行中修改已经输入的命令比较麻烦。通过开启vi模式,用户可以像在vi编辑器里一样进行操作。对于vi用户来说,进入这种模式后,编辑和修改命令就显得十分得心应手了。
使用nanoneovim等终端编辑器修改.zshrc文件来进行配置,在plugins部分添加vi-mode项,开启vi模式。在命令行状态下,按Esc键,即可进入vi模式的普通模式
不过在默认的vi模式存在按键bug,需要在.zshrc文件最后添加如下配置:
# Better searching in command mode
bindkey -M vicmd '?' history-incremental-search-backward
bindkey -M vicmd '/' history-incremental-search-forward

# Beginning search with arrow keys
bindkey "\033[1~" beginning-of-line
bindkey "\033[4~" end-of-line
bindkey '^[[3~' delete-char
bindkey "^[OA" up-line-or-beginning-search
bindkey "^[OB" down-line-or-beginning-search
bindkey -M vicmd "k" up-line-or-beginning-search
bindkey -M vicmd "j" down-line-or-beginning-search

三、Python包安装与配置

1. 安装环境配置

# 配置pypi源
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 依赖项
pip install wheel
pip install setuptools --upgrade

2 Python包安装

  • 安装numpyscipy
# 添加第三方仓库
curl -LO https://its-pointless.github.io/setup-pointless-repo.sh
bash setup-pointless-repo.sh

# 从仓库安装numpy scipy
pkg install -y numpy scipy


  • 安装lxml
# 安装lxml的依赖项
pkg install -y libxml2 libxslt

# 安装lxml
pip install lxml


  • 安装pillow
# 安装pillow的依赖项
pkg install -y libjpeg-turbo libtiff
pkg install -y littlecms tk libwebp libsodium

# 安装pillow
pip install pillow


  • 安装matplotlib
# 安装matplotlib的依赖项
pkg install -y freetype libpng
pip install kiwisolver cycler
pip install pyparsing python-dateutil
# 安装matplotlib
pip install matplotlib


  • 安装pandas
# 安装pandas的依赖项
pip install -y pytz cython

# 安装pandas
export CFLAGS="-Wno-deprecated-declarations -Wno-unreachable-code"
pip install pandas


  • 安装jupyter
# 安装jupyter依赖项
pkg install -y libzmq libcrypt pkg-config

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

四、IPython和NeoVim配置

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

1. IPython配置

  • 安装IPython
# 安装yapf
pip install yapf

# 安装Pygments
pip install pygments

# 安装ipython
pip install ipython


  • 创建配置文件
使用ipython profile create命令在~/.ipython/profile_default/目录下的创建ipython_config.py配置文件。


  • 修改配置文件
使用neovim、nano等终端编辑器修改~/.ipython/profile_default/目录下的ipython_config.py文件,添加如下配置:
# 配置终端颜色
c.InteractiveShell.colors = 'Linux'
c.TerminalInteractiveShell.autoformatter = 'yapf'
# 配置高亮方案,可通过pygmentize -L styles浏览所有可选配置
c.TerminalInteractiveShell.highlight_style = 'monokai'
# 配置魔术命令%editor使用的编辑器
c.TerminalInteractiveShell.editor = 'nvim'

2. NeoVim配置

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


  • 创建init.vim文件进行基本配置
在命令行下,通过nvim命令进入NeoVim编辑器,输入:e $MYVIMRC编辑NeoVim配置文件,使用:w进行保存,基本设置如下:
" 一般设置
set nocompatible "关闭与vi的兼容模式
set number "显示行号
set nowrap "不自动折行
set showmatch "显示匹配的括号
set scrolloff=3 "距离顶部和底部3行"
set encoding=utf-8 "编码
set fenc=utf-8 "编码
set fileencodings=utf-8
set hlsearch "搜索高亮
syntax on "语法高亮
set tabstop=4 "tab宽度
set shiftwidth=4
set smarttab
set backspace=indent,eol,start
set expandtab "tab替换为空格键
set fileformat=unix "保存文件格式
set splitbelow
set cmdheight=2
set completeopt=longest,menu
set splitright
set foldmethod=indent
set foldlevel=99
" 设置空格为leader键
let mapleader=" "



  • 使用vim-plug安装NeoVim插件
vim-plug是一款Vim插件管理工具,支持异步并行,可以快速安装、更新或卸载插件。可以通过如下命令进行安装,或手动下载plug.vim文件,复制到在~/.config/nvim/autoload文件夹中。
curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  
使用vim-plug时,需要在init.vim中添加下列代码块。
" vim-plug插件管理
call plug#begin('~/.config/nvim/plugged')
Plug 'junegunn/vim-plug'
call plug#end()
        
保存后,在普通模式下输入:so %使配置文件生效,再通过:PlugInstall进行安装。

  • 常用插件及设置
下面列举了一下常用插件和基本设置:
call plug#begin('~/.config/nvim/plugged')
Plug 'junegunn/vim-plug'
" git支持
Plug 'tpope/vim-fugitive'
" Python自动缩进插件
Plug 'vim-scripts/indentpython.vim'
" 项目管理工具
Plug 'mhinz/vim-startify'
" 快速对齐插件
Plug 'junegunn/vim-easy-align'
" 当前光标下的单词增加下划线
Plug 'itchyny/vim-cursorword'
" 快速选择插件
Plug 'tpope/vim-surround'
" 自定义代码片断
Plug 'honza/vim-snippets'
" 语法高亮支持
Plug 'sheerun/vim-polyglot'
" 主题、状态栏设置
Plug 'haishanh/night-owl.vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ryanoasis/vim-devicons'
" coc扩展
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" fzf模糊查找
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
" whichkey快捷菜单
Plug 'liuchengxu/vim-which-key
" 浮动窗口支持
Plug 'voldikss/vim-floaterm'
" ranger文件管理器支持
Plug 'kevinhwang91/rnvimr'
call plug#end()

" 启用标签栏
let g:airline#extensions#tabline#enabled = 1
" 支持图标字体
let g:airline_powerline_fonts = 1
" 设置状态栏主题
let g:airline_theme='night_owl'
" 设置主题
set termguicolors
let &t_8f = "\[38;2;%lu;%lu;%lum"
let &t_8b = "\[48;2;%lu;%lu;%lum"
syntax enable
colorscheme night-owl


  • 安装、配置coc.nvim扩展
coc.nvim是一款支持扩展的插件,类似于油猴,可以通过安装扩展,以实现像Vscode一样使用NeoVim,下面列举了Python相关的coc扩展和配置:
" coc扩展
let g:coc_global_extensions = [
\'coc-json',
\'coc-pyright',
\'coc-snippets',
\'coc-xml',
\'coc-explorer',
\'coc-prettier',
\'coc-highlight']

" 使用tab键进行补全选择
inoremap
\ pumvisible() ? "\" :
\ check_back_space() ? "\" :
\ coc#refresh()
inoremap pumvisible() ? "\" : "\"

function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction

" 使用回车进行补全选择
inoremap pumvisible() ? coc#_select_confirm()
\: "\u\\=coc#on_enter()\"

" Highlight the symbol and its references when holding the cursor.
autocmd CursorHold * silent call CocActionAsync('highlight')

" Add `:Format` command to format current buffer.
command! -nargs=0 Format :call CocAction('format')

" Add `:Fold` command to fold current buffer.
command! -nargs=? Fold :call CocAction('fold', )

" Add `:OR` command for organize imports of the current buffer.
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')

" 添加状态栏显示支持
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}

" 启用Prettier进行文件自动格式化
command! -nargs=0 Prettier :CocCommand prettier.formatFile
let g:prettier#autoformat = 1

" 设置Coc Search
nnoremap ? :CocSearch =expand("")

此外,coc扩展可以通过在~/.config/nvim/文件夹中创建coc-settings.json文件来进行配置:
{
"python.defaultInterpreterPath": "/data/data/com.termux/files/usr/bin/python",
"python.pythonPath": "/data/data/com.termux/files/usr/bin/python",
"python.linting.pylintEnable":true,
"python.formatting.provider": "yapf",
"python.formatting.yapfArgs": [
"--style",
"{SPACES_AROUND_POWER_OPERATOR: True, SPACES_BEFORE_COMMENT: 1}"
],
"explorer.width": 38,
"explorer.quitOnOpen": true,
"explorer.sources": [
{
"name": "buffer",
"expand": false
},
{
"name": "file",
"expand": true
}
],
"explorer.file.column.indent.indentLine": true,
"explorer.file.showHiddenFiles": true,
"explorer.icon.enableNerdfont": true,
"explorer.keyMappingMode": "none",
"explorer.buffer.showHiddenBuffers": false,
"explorer.keyMappings.global": {
"o": ["wait", "expanded?", "collapse", "expand"],
"": ["wait", "expandable?", "cd", "open"],
"?": "help",
"q": "quit"
},
"coc.preferences.formatOnSaveFiletypes": ["*"],
"prettier.printWidth": 100,
"prettier.eslintIntegration": true,
"prettier.disableLanguages": [],
"prettier.formatterPriority": 1,
"prettier.useTabs": true,
"prettier.trailingComma": "all",
"prettier.singleQuote": false,
"prettier.tabWidth": 4
}



  • 配置vim-which-key
vim-which-key是一款快捷键映射插件,可以通过简单的设置进行快捷键自定义功能的实现。下面列举了vim-which-key的简单设置:
" 将空格设置为whichkeyleader键
nnoremap :WhichKey ''

" whichkey基本配置
let g:which_key_timeout = 100
let g:which_key_display_names = {'': '↵', '': '⇆'}
let g:which_key_map = {}
let g:which_key_sep = '→'
let g:which_key_use_floating_win = 0
let g:which_key_max_size = 0

" 呼出whichkey时隐藏状态栏
autocmd! FileType which_key
autocmd FileType which_key set laststatus=0 noshowmode noruler
\| autocmd BufLeave set laststatus=2 noshowmode ruler

" 自定义whichkey
let g:which_key_map['?'] = 'search word'
let g:which_key_map['/'] = [ ':call Comment()' , 'comment' ]
let g:which_key_map['.'] = [ ':e $MYVIMRC' , 'open init' ]
let g:which_key_map[';'] = [ ':Commands' , 'commands' ]
let g:which_key_map['e'] = [ ':CocCommand explorer --toggle --sources=file+' , 'explorer' ]
let g:which_key_map['n'] = [ ':let @/ = ""' , 'no highlight' ]
let g:which_key_map['q'] = [ '(coc-fix-current)' , 'quickfix' ]
let g:which_key_map['u'] = [ ':UndotreeToggle' , 'undo tree']
let g:which_key_map['t'] = [':FloatermNew --wintype=normal --height=6' , 'terminal']
let g:which_key_map['r'] = [ ':FloatermNew ranger' , 'ranger']
let g:which_key_map['f'] = [':FloatermNew fzf' , 'fzf']
let g:which_key_map['g'] = [':FloatermNew lazygit' , 'git']
let g:which_key_map['p'] = [':FloatermNew python' , 'python']
call which_key#register('', "g:which_key_map")

  • 在NeoVim中运行Python脚本
可以通过在NeoVim中添加自定义功能,从而在编写时运行当前Python脚本。
"在普通模式下,按r来运行Python脚本
noremap r :call RunPython()
func! RunPython()
exec "w"
if &filetype == 'python'
exec "!time python %"
endif
endfunc

五、结语

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

https://gitee.com/knightz1224/termux_config/
作者简介:张老师,学习计算机十余年,在信息安全、生物信息学、会计、平面设计、编辑出版等多个领域也均有涉猎,热爱钻研、热爱考证、热爱生活。 

更多阅读



2020 年最佳流行 Python 库 Top 10


2020 Python中文社区热门文章 Top 10


5分钟快速掌握 Python 定时任务框架

特别推荐




点击下方阅读原文加入社区会员

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报