苹果系统 (MacOS) 下安装 Python 并配置学习环境

0. 前言

对于大部分想要学习 Python 的新手而言,配置环境是其遇到的第一座大山。尽管安装过程并不繁琐,且简易教程俯首皆是,但对于从未接触过编程,以及从未接触过命令行语言的人来说,安装及配置过程中确实会碰到很多不容易搞明白的概念。如果能很好地理解了这些概念,对后期的学习也会起到一定的帮助。
 

本文会对如何在苹果系统 (macOS) 上配置 Python 环境,安装其他可选软件,解释基础概念做一个较为完备的介绍,希望对你有所帮助。
 

注意,本文基于的苹果系统是 macOS Monterey Version 12.0.1,如果你使用的是其他系统,步骤上可能会有区别。
 

如果你希望阅读有关在 Windows系统中配置 Python 环境的文章,请参阅 此篇文章
 

1. 背景

本节会介绍一些相关背景概念,如果只想关注环境配置相关内容,可直接跳过此段。跳过此段不会对安装过程产生影响。
 

什么是 Python?所谓“安装 Python” 安装的到底是什么?
 

Python 是一种编程语言。编程语言是一种人为定义的语言,可以向电脑发出命令,让其能够执行预期的操作。
 

一段编程语言(代码),其本质上就是一串文本文字。如下示例的代码,它和我们在 txt 文档中打出的文字没有区别。
 

print("Hello World")

 

那么我们是如何让计算机知道一段代码应该执行什么样的操作呢?这里我们稍微深入展开一点,注意下面会出现很多专业名词,其名词本身的含义可以不去深究,但其中的逻辑关系希望可以理解清楚。
 

现在的编程语言大致可以分为两类:
 

  • 编译型 语言,如:C, C++
     

  • 解释型 语言,如:Python, JavaScript
     

对于 编译型 语言,当一段代码被撰写完成后,首先需要用编译器 (compiler) 将其编译 (compile),生成一个可执行文件;其后运行这个可执行文件,就可以执行相关操作了。可执行文件就是你们在 windows 电脑中经常见到的后缀名为 .exe 的文件。
 

对于 解释型 语言,其运行省去了编译的过程,取而代之的是一个用解释器 (interpreter) 完成的步骤。当代码被撰写完成后,我们可以使用解释器来运行这个代码,从而直接执行相关操作。
 

二者的对比可参考下图:
 

compiler_interpreter
 

因此,安装 Python 实际上就是安装 Python 解释器。而执行 Python 代码的过程,就是使用 Python 解释器执行具体操作的过程。
 

2. 安装 Python 并进行验证

本段主要介绍如何安装 Python 本体,并通过一段最小代码来验证安装是否成功。

Python 的安装

我们可以选择安装最基本的 Python 解释器,但对于新手学习者来说,我更推荐安装 Anaconda
 

Anaconda 是一个免费的 Python 发行版本,其中不仅包含了 Python 解释器本体,还包含了一些用于数据科学、机器学习、大数据处理等方面的常用扩展包,以及一个包管理工具 conda。扩展包与包管理工具这两个概念在此按下不表,对于初学者来说 Anaconda 是一个较为便携的工具。
 

首先通过 [下载链接] 下载 Anaconda 的安装包,注意选择相应系统的版本。对于 macOS 来说,你需要下载的应该是 64-Bit Graphical Installer (440 MB)
 

下载完成后,直接双击进入安装步骤。
 

 

 

双击打开后可能会出现上图左一的页面,点击允许即可。之后的每个界面,都只需点击继续或者确认。在如上图中间页面的安装过程中需要等待若干分钟完成安装。在安装过程中可能会出现上图右一的页面,此时点击允许。若在安装完成后弹出询问框询问是否将安装包放入回收站,选择放入即可。

 

页面关闭后则安装过程结束。
 

验证 Python 安装是否完成

当上一段落中的 Anaconda 安装完成后,Python 也一并安装到了电脑上。但为了进一步确认安装成功,我们来进行一个验证
 

让我们打开 Terminal。打开 Terminal 有两种方式:1. 在启动台的 “其他” 文件夹中打开;2. 按住键盘 command+空格 ,在弹出的框中输入 Terminal,回车打开。你将会看到如下图所示界面:
 




 

在打开的 Terminal 窗口中输入 python (如下图左),并按下回车。如果进入了 Python 可交互编程页面 (如下图右),且出现了红框中显示的内容,则表示 Python 安装成功
 

 

最后,在 Python 可交互编程页面中输入 1+1 并按下回车,会发现输出了 2 😉

3. 安装编辑器 VSCode 并进行配置

在第一节背景中有过介绍,Python 代码本质上是一串文本文字,因此你可以很方便地通过任何文本文档编辑器来编写 Python 代码。但工具善其事,必先利其器,有相对更便于编写代码的工具,VSCode 便是更为推荐的一个。
 

VSCode 全称是 Visual Studio Code,是微软推出的免费轻量级代码编辑器,适合入门使用。点击 [下载链接] 进行下载,因为是 macOS 系统,则点击 MAC 版本下载。
 

下载完成后得到一个后缀名为 .zip 的文件,双击解压后得到软件本体,将其放入 Applications 文件夹中即可。
 

完成安装后,双击启动 VSCode,现在开始进行配置。
 




 

首先让我们安装一些有用的插件,点击如上图所示左侧工具栏最后一个按钮。在上方搜索框中搜索 Python,选择第一个带星标的搜索结果,并点击安装(如下图所示)。这样就完成了一个插件的安装。
 




 

让我们重复上面的步骤,搜索并安装下述插件:
 

  • One Dark Pro, 一个更好看的主题界面,界面炫酷程度和代码功力成正比(笑
     
  • vscode-icons, 一个更好看的图标集合,理由同上
     

接下来,配置一下 VSCode 的环境。在 VSCode 中点击键盘 F1,在弹出的框中输入 Open Settings,如下图所示打开红框选中的一项:
 




 

在弹出的页面中删除所有已经存在的内容,并将下述段落中的文字全部复制到页面中,并按下 ctrl+S 进行保存。
 

{
    "editor.fontSize": 20,
    "workbench.statusBar.visible": true,
    "python.pythonPath": "ATTENTION",
    "terminal.integrated.copyOnSelection": true,
    "debug.console.fontSize": 20,
    "terminal.integrated.fontSize": 15,
    "python.defaultInterpreterPath": "ATTENTION",
    "workbench.editorAssociations": {
        "*.ipynb": "jupyter-notebook"
    },
    "security.workspace.trust.untrustedFiles": "open",
    "workbench.colorTheme": "One Dark Pro",
    "workbench.iconTheme": "vscode-icons",
}

 

注意到上述段落中有两个 ATTENTION,接下来我们要找到用来替换填充这个字段的内容。
 

按照先前提到过的方法打开 Terminal,在弹出的界面中输入下述语句,并点击回车
 

which python

 
如下图所示,在输出的内容中,选取蓝色高亮的部分并复制。接着粘贴并替换上文中所有的 ATTENTION 部分,按下 ctrl+S 进行保存。
 




 

重启 VSCode,配置结束。

4. 下载并配置 sublime text

正如上文中多次重复所说,Python 代码本质上是一串文本文字,因此代码文件可以用文本编辑器来打开。
 

然而 macOS 中并没有称心如意的文本编辑器,因此我们需要下载一个功能更强大的文本编辑器作为替代品:Sublime Text
 

点击 [下载链接] 下载 Sublime Text,注意选择对应的系统版本。
 

下载完成后得到一个后缀名为 .zip 的文件,双击解压后得到软件本体,将其放入 Applications 文件夹中即可。
 
接着我们开始配置,双击打开 Sublime Text,并点击工具栏中的 Sublime Text -> Preferences -> Settings
 

设置界面是双栏,左侧是所有基础设置,右侧是自定义设置。首先将右侧所有内容清空,然后将下方段落中的内容复制到右侧栏中,点击 ctrl+S 保存,便完成了设置,可以关闭软件。
 

{
    "default_encoding": "UTF-8",
    "default_line_ending": "unix",
    "font_size": 17,
    "ignored_packages":
    [
        "Package Control",
        "Vintage"
    ],
    "translate_tabs_to_spaces": true
}

5. 配置舒适美观的编程环境

在完成了上述三章的下载配置后,你已经可以开始 Python 的学习之旅了。但如果你想要让编程体验更加舒适,界面更加美观,且你愿意折腾,可以参照以下步骤进行一些其他环境的配置。
 

本章会使用 iTerm2 + zsh + oh-my-zsh + go2shell 来打造一个美观舒适的编程环境。注意:过程中会用到 shell 语句以及 vim 操作,请确保拥有前置知识再开始本章的配置。

安装 iTerm2

先下载安装 iTerm2,这是一个 Terminal 的替代品,拥有更好看的界面与更强大的功能。点击 [下载链接],点击 Download 进行下载。
 

下载完成后得到一个后缀名为 .zip 的文件,双击解压后得到软件本体,将其放入 Applications 文件夹中即可。

安装 HomeBrew

现在让我们安装一个 macOS 上的包管理工具 Homebrew,打开刚安装好的 iTerm,在其中输入如下命令,并按下回车:
 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

可能会提示让你输入 sudo 密码,只要你输入开机密码并按下回车就行。注意!!,在输入密码时你可能会发现无论按下什么按键屏幕上都没有反应,这是正常现象,密码输入状态屏幕不会根据你按键的次数显示同等数量的星号,只需输入正确的密码并按下回车即可。在安装过程中可能会提示你按下回车键,此时同样按下回车即可。
 

安装 Homebrew 的过程可能会比较久,请耐心等待。当出现下图所示状态时,安装结束。
 



安装 zsh, oh-my-zsh

首先安装命令行 zsh。让我们先验证一下电脑中是否预装了 zsh,在 iTerm 窗口中输入下述命令:
 

zsh --version

 

如果输出页面如下图所示,则说明电脑中已经预装了 zsh,直接进行下一步。
 




 
如果没有显示如上图所示的输出,则使用下述命令安装 zsh
 

brew install zsh

 

无论是预装抑或是使用命令安装,当完成 zsh 的安装后,下一步我们来安装 oh-my-zsh 框架。这是一个用来管理 zsh 配置的开源软件。
 

在 iTerm 中使用如下命令来下载 oh-my-zsh
 

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

 

安装过程中会询问你是否将默认 shell 变化成 zsh,此时输入 Y 并按下回车 (可能需要输入密码,同样是你的开机密码)
 

当出现如下界面时,则说明 oh-my-zsh 安装成功。
 



下载并配置 VIM

VIM 是一个命令行文本编辑器,接下来的配置都会用到此工具。
 

首先,验证电脑中是否预装了 git,在 iTerm 窗口中输入下述命令:

git --version

如果输出页面如下图所示,则说明电脑中已经预装了 git,直接进行下一步。



如果没有显示如上图所示的输出,则使用下述命令安装 git
 

brew install git

 

接着,用下述命令验证是否安装了 vim
 

vim --versoin

 

若没有,则下述命令安装。
 

 brew install vim

 

然后,使用下述命令安装 vim 插件管理工具 Vundle,注意手动创建不存在的文件夹
 

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

 
接着,创建 ~/.vimrc 文件,或删除并新建 ~/.vimrc 文件,并将下述文字全量粘贴进该文件中
 

" *********************************************
" Vbundle插件管理
" *********************************************
set nocompatible              " required
filetype off                  " required 

set encoding=utf-8
let python_highlight_all=1
syntax on

set hlsearch
set clipboard=unnamed

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim' 
Plugin 'scrooloose/nerdtree'

" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

" *********************************************
" NERD插件属性
" *********************************************
" au vimenter * NERDTree
" 开启vim的时候默认开启NERDTree
map <F2> :NERDTreeToggle<CR>
" 设置F2为开启NERDTree的快捷键


" *********************************************
" Tomorrow主题配置
" *********************************************
set t_Co=256
set background=dark
colorscheme Tomorrow-Night

set nu
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent

" *********************************************
" 分割布局相关
" *********************************************
set splitbelow
set splitright
"快捷键,ctrl+l切换到左边布局,ctrl+h切换到右边布局
"ctrl+k切换到上面布局,ctrl+j切换到下面布局
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>

" 开启代码折叠功能
" 根据当前代码行的缩进来进行代码折叠
set foldmethod=indent 
set foldlevel=99

" 将za快捷键映射到space空格键上
nnoremap <space> za

Plugin 'majutsushi/tagbar'
" 启动时自动focus
let g:tagbar_auto_faocus =1 
" 启动指定文件时自动开启tagbar
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()

" Plugin 'Valloric/YouCompleteMe'
" *********************************************
" YCM插件相关
" *********************************************
" let g:ycm_autoclose_preview_window_after_completion=1
" 跳转到定义处
" map <leader>g  :YcmCompleter GoToDefinitionElseDeclaration<CR>
" 默认tab、s-tab和自动补全冲突
" let g:ycm_key_list_select_completion = ['<TAB>', '<c-n>', '<Down>']
" let g:ycm_key_list_previous_completion = ['<S-TAB>', '<c-p>', '<Up>']
" let g:ycm_auto_trigger = 1


Plugin 'kien/ctrlp.vim'
" *********************************************
" ctrlp
" *********************************************
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
" 设置过滤不进行查找的后缀名
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn|pyc)$'


" *********************************************
" python代码风格PEP8
" *********************************************
au BufNewFile,BufRead *.py set tabstop=4 |set softtabstop=4|set shiftwidth=4|set textwidth=79|set expandtab|set autoindent|set fileformat=unix
au BufNewFile,BufRead *.js, *.html, *.css set tabstop=2|set softtabstop=2|set shiftwidth=2

Plugin 'vim-scripts/indentpython.vim'

set colorcolumn=80
set nocompatible
set backspace=indent,eol,start

 

保存后,在 vim 中运行 :PluginInstall 安装插件。
 

接着配置 vim 的主题,点击链接 git,将 color 文件夹放在 ~/.vim/ 文件夹下。
 

此时所有 vim 的插件及主题配置结束。但有时会出现如下异常情况:退出 vim 后,终端界面没有刷新,仍停留在文件内容界面。错误原因是终端类型不合适。使用
 

echo $TERM

 

查看终端类型,若输出结果不是 xterm-256color,则使用如下命令进行改动
 

TERM=xterm-256color;
export TERM

配置 oh-my-zsh

现在已经做完了所有的准备工作,来配置 oh-my-zsh 使编程环境更加美观吧。
 

创建,或删除并新建文件 ~/.zshrc,并将下述文字全量粘贴至文件中:

export ZSH="ATTENTION"

ZSH_THEME="agnoster"

plugins=(git
         zsh-syntax-highlighting
         zsh-autosuggestions
)

source $ZSH/oh-my-zsh.sh

prompt_context() {}

 
接着 cd 到 ~/.oh-my-zsh/custom/plugins 路径中,运行以下命令:
 

# 安装 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
# 安装 zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions

 

全部完成之后,运行如下命令,使配置生效:
 

source ~/.zshrc

 

如果出现箭头无法正确显示,请参照 该链接 下载并替换字体

安装 go2shell

macOS 中缺少了一个重要的功能:在当前文件夹打开终端页面,这对编程来说很不方便。go2shell 就是实现这个功能很方便的软件
 

git 克隆到本地,并将 Go2Shell_iTerm_newWin 放入 Application 文件夹。随后长按 command 键的同时,使用鼠标左键将该软件拖动到 Finder 工具栏中固定。

现在,你在任意 Finder 页面中点击该图标,就可以在当前界面打开一个 iTerm 窗口了,并且是完成了上述所有配置后的美观窗口

6. 后记

至此,在 macOS 上下载并安装 Python,安装其余学习软件并配置的所有步骤全部都完成了,你可以直接进行一个习的学。 如果有任何我没有解释清楚的步骤,欢迎评论。
 

并欢迎关注本博客的其他文章,篇篇精品 😉