帅瞎了!手机也能写Python代码!手把手教你在手机或平板上配置Python环境!
公众号后台回复“图书“,了解更多号主新书内容
作者:张老师
来源:菜J学Python
本文旨在讲解如何在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
需要使用nano
、neovim
等终端编辑器修改.zshrc
文件来进行配置,在plugins
部分添加插件支持:
plugins=(gitpythoncolorizezsh-interactive-cdzsh-navigation-toolszsh-autosuggestions
)
2. 主题美化
2.1 配色与字体
长按屏幕,点击More
,选择Style
可以选择配色和字体,推荐使用Neon
配色和JetBrains Mono
字体,也可以通过修改~/.termux/
目录下的colors.properties
和font.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
用户来说,进入这种模式后,编辑和修改命令就显得十分得心应手了。
使用nano
、neovim
等终端编辑器修改.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包安装
安装
numpy
和scipy
# 添加第三方仓库
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 = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[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 <silent><expr> <TAB>\ pumvisible() ? "\<C-n>" :\ <SID>check_back_space() ? "\<TAB>" :\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"function! s:check_back_space() abortlet col = col('.') - 1return !col || getline('.')[col - 1] =~# '\s'
endfunction" 使用回车进行补全选择
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"" 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', <f-args>)" 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 <leader>? :CocSearch <C-R>=expand("<cword>")<CR><CR>
此外,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"],"<cr>": ["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 <silent> <leader> :WhichKey '<Space>'<CR>" whichkey基本配置
let g:which_key_timeout = 100
let g:which_key_display_names = {'<CR>': '↵', '<TAB>': '⇆'}
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 <buffer> 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'] = [ '<Plug>(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('<Space>', "g:which_key_map")
在NeoVim中运行Python脚本
可以通过在NeoVim中添加自定义功能,从而在编写时运行当前Python脚本。
"在普通模式下,按r来运行Python脚本
noremap r :call RunPython()<CR>
func! RunPython()exec "w"if &filetype == 'python'exec "!time python %"endif
endfunc
◆ ◆ ◆ ◆ ◆麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
帅瞎了!手机也能写Python代码!手把手教你在手机或平板上配置Python环境!相关推荐
- 计算机我的手机选项在哪里设置方法,手把手教你用手机轻松设置无线wifi路由器的方法...
wifi已经成为人们生活中不可缺少的一部分,很多人都已经离不开没有wifi的日子,在家里也是随时连接网络玩手机,的确,wifi给我们的生活带来了极大的便利,但是关于如何设置wifi,你又是否清楚?今天 ...
- 手机怎么模拟125k卡_手把手教你用手机NFC秒变门禁卡,这个方法多种手机都可以适用...
现在只要手机支持NFC功能,手机秒变公交卡.移动支付.数据传输.门禁卡等功能,之前在评论看多好多人说不知道怎么复制门禁卡,今天就来和大家讲解下如何复制门禁卡. 我们以华为手机,前提是手机支持NFC功能 ...
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...
- python跑得慢_代码跑得慢甩锅Python?手把手教你如何给代码提速30%
原标题:代码跑得慢甩锅Python?手把手教你如何给代码提速30% 来源丨Medium 编译丨王转转 大数据文摘出品 https://mp.weixin.qq.com/s/bY3REj6qVw0M1N ...
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...
- python远程桌面控制_手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
配置说明 使用Pycharm 2020.1.1 professional 专业版.(据说只有专业版可以远程连接)如果不是专业的伙伴,可以用校园邮箱注册一个专业版,免费的哦! 步骤 1. 设置Conne ...
- 科学计算机后盖换电池,图吧小白教程 篇二十二:手把手教你给手机换电池(拆机)...
图吧小白教程 篇二十二:手把手教你给手机换电池(拆机) 2019-11-16 14:06:58 4点赞 18收藏 2评论 创作立场声明:手机换电池省钱可以自己动手从工钱上省,买电池最好还是不要省钱买杂 ...
- 如何在PyCharm上配置Python解释器,以及解决Windows上PyCharm不能识别C:\Users\Me\AppData路径的问题。
最近遇到这么一个问题.在Windows上安装Python解释器后,我在PyCharm上却不能找到相应的路径.我花了一些时间去解决这个问题,将解决方案记录于此. 1 如何在PyCharm上配置Pytho ...
- 手把手教你制作手机底部导航栏,领导看完都说好
手把手教你制作手机底部导航栏,领导看完都说好
- 惠普打印机m226dn教程_WiFi当道 手把手教你完成手机无线打印
[中关村在线办公打印频道原创]我们从一个地方到另一个新地方,利用率最多的一句话大概就是"这里有WiFi吗",可见"WiFi君"的重要性.那么公司的WiFi除了日 ...
最新文章
- 快的打车联合创始人兼技术副总裁闻诚:CTO要有“334”能力
- 计算机硬件 OR CX 1,计算机硬件第三章ppt
- Java黑皮书课后题第10章:*10.22(实现String类)Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString1)
- Spring Web Service 学习之Hello World篇
- Android4.1 新功能 新特性(转)
- 最简单的基于FFmpeg的编码器-纯净版(不包含libavformat)
- 怎么通过media foundation将图像数据写入虚拟摄像头_[Camera]摄像头镜像
- [NLP] 相对位置编码(二) Relative Positional Encodings - Transformer-XL
- c# word 增加段落_你知道制作简历时的9个Word技巧吗?
- Hue添加Spark notebook
- Java岗招聘标准水涨船高,五年Java程序员表示面试太难了
- ENVI学习总结(四)——图像正射校正
- acm竞赛2016c语言真题,C语言acm竞赛习题集锦.doc
- 汇编语言中xor指令_常用的汇编指令
- 安国AU6985+海力士 H27UBG8T2A量产
- 从零开始玩PT-新人指南
- 本人的月末结账步骤备忘
- rdt(可靠数据传输)
- 【渝粤题库】陕西师范大学200521 普通语言学
- Unity Shader 基于 RGB 插值的 Wireframe 描边着色器
热门文章
- 一例智能网卡(mellanox)的网卡故障分析
- AxureRP初体验
- android五中布局 四大组件,Android 四大组件五大布局
- 汤家凤:历年真题怎么用?接力题典怎么配合?黄金十月拼命干,提高很多分数不是梦!...
- VASP 系列001. 高通量计算 Python 库 pymatgen 安装和一些使用(用 pymatgen 画 HSE 能带的细节和输出图片字体的简单调整)
- 水系图一般在哪里找得到_Nano Energy:铝离子扩层V2O5nH2O用于高性能水系锌离子电池...
- AFM测试探针简介-科学指南针
- 商务与经济统计(13版,Python)笔记 01-02章
- 使用gooflow和easyui做的一个工作流程配置图
- 用海康威视摄像头做图像处理问题