Mac与Python



mac ruby更换版本 mac ruby woo什么时候改版的_mac ruby更换版本

——如何在Mac上配置Python

作者/cat老师



mac ruby更换版本 mac ruby woo什么时候改版的_mac安装指定版本的ruby_02

Mac下默认安装的PythonPython 2.7.16

这是在2019年3月4日发布的版本。距今已经有一年多的时间。新版本的Python基本上按照一月一次的更新计划定期发布。截止到2020年10月23号Python已经发布了Python 3.8.6版本。



mac ruby更换版本 mac ruby woo什么时候改版的_mac ruby更换版本_03


意味着,要在 Mac

上体验新版 Python3

的特性。就需要在 Mac

上安装 Python3

,并保持更新。 在这里我们使用 Homebrew

安装并执行更新。

首先--环境配置

先查看现在当前手中的Mac环境准备情况。

检查Homebrew



mac ruby更换版本 mac ruby woo什么时候改版的_mac ruby更换版本_04


因为我们使用 Homebrew

来安装和保持 Python

更新。因此,我们首先检查 Homebrew

环境。

如果没有显示内容,而是显示command not found: brew。说明需要安装Homebrew

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

查看本机安装的Python



mac ruby更换版本 mac ruby woo什么时候改版的_mac安装指定版本的ruby_05

如果之前使用过从python.org下载的Python进行过安装。那么它的安装和更新方式跟Homebrew有所不同。
如果不需要同时存在多个旧Python版本,就需要删除多余的Python版本。

注意⚠️:在Mac上,操作系统需要用到/usr/bin/python下的Python。所以该目录下的Python不要删除。



mac ruby更换版本 mac ruby woo什么时候改版的_Mac_06

mac ruby更换版本 mac ruby woo什么时候改版的_Python_07

mac ruby更换版本 mac ruby woo什么时候改版的_Python_08

但是,位于/usr/local/bin或者通过符号链接到此处的Python版本,可以进行删除。

mac ruby更换版本 mac ruby woo什么时候改版的_Mac_09

如果位置是以../Cellar/python开头到,说明是用Homebrew安装的。

不需要的Python版本直接在此处删除,然后删除原文件即可。

安装Python

brew install python3

升级Python

brew upgrade python3



mac ruby更换版本 mac ruby woo什么时候改版的_virtualenv_10

如果已经安装了最新版本的PythonHomebrew会显示:

mac ruby更换版本 mac ruby woo什么时候改版的_Python_11

安装所需的Python packages

安装Pipenv

brew install pipenv

PipenvKenneth Reitz在2017年1月发布的Python依赖管理工具,现在由PyPA维护。你可以把它看做是pipvirtualenv的组合体。

我们到底是使用HomebrewPip或者Pipenv?配合virtualenv虚拟沙盒环境中安装Python package

Virtualenv提供沙盒模式,创建了一个虚拟环境用于隔离Python应用。

使用Homebrew安装



mac ruby更换版本 mac ruby woo什么时候改版的_Python_12

如果要在项目内外使用某些Python package,并希望它自动更新,并且Homebrew提供安装方式,请使用Homebrew!例如,如果我们打算在项目中使用Flake8。则在整个项目中,我们都希望能够使用到Flake8并且能自动更新:

brew install flake8

现在,Flake8在整个系统中都可用。

Pipenv配合virtualenv安装

在开发中,如果我们要在特定的项目中使用特定的Python package。最好的方式就是使用Pipenv将其安装到当前的virtualenv中。
比如,我们打算在某一个项目中使用pyppyn来帮助我们动态读取安装配置和加载依赖项。

首先基于Python 3使用pipenv创建新的virtualenv-macOS虚拟沙盒环境:

cd project_dir/pipenv --three

启动(activate)virtualenv并在其中安装pyppyn

pipenv shellpipenv install pyppyn

Pyppyn仅在project_dir/下的virtualenv中可用。

virtualenv外部使用Pip安装

mac ruby更换版本 mac ruby woo什么时候改版的_Python_12

如果我们希望Python package在整个系统中都可用,但又不想随便更新,或者Homebrew没有提供安装方式。

则可以使用Pip安装。

比如,如果我们打算在项目中使用Pylint对代码进行编码,但是Homebrew没有提供安装方式。则可以在任何virtualenv之外使用Pip安装它。

启动一个新的终端,以确保不在virtualenv中:

pip3 install pylint

此时,Pylint将在系统全局可用,包括基于Python 3创建的virtualenv

但是,我们将负责通过Pip保持最新状态:

pip3 install pylint --upgrade
通过结合CronPip进行安装



mac ruby更换版本 mac ruby woo什么时候改版的_virtualenv_14

mac ruby更换版本 mac ruby woo什么时候改版的_mac ruby更换版本_15

mac ruby更换版本 mac ruby woo什么时候改版的_Python_16

mac ruby更换版本 mac ruby woo什么时候改版的_Python_12

merry christmas圣诞快乐


如果您想自动保持系统范围的Python package为最新,但是Homebrew没有提供安装方式。则可以使用crontab

例如,如果要在整个Python项目中使用Pylint,并且希望其自动保持最新状态。使用crontab定期运行上面提到的upgrade命令。

crontab是用来定期执行程序的命令。

crontab -e

执行文字编辑器来设定时程表。如果没有更改过文字编辑器,该命令将打开系统的默认编辑器Vim

如果以前没有使用过该命令,则会看到一个空白文件。如果之前已经使用过crontab,则会看到之前添加的内容。

Cron无法访问您的Bash配置文件,因此我们将通过设置来确保系统可以找到命令PATH

#!/bin/sh PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

随后添加crontab定时步骤。每个步骤都包含一个命令和执行该命令的时间表。

例如,要分别在每天的4:004:30更新PylintHomebrew,可以添加如下两个步骤:

40 00 * * * pip3 install pylint --upgrade40 30 * * * brew upgrade

每次运行这些命令时,系统可以自动向我们发送包含命令执行结果的电子邮件。

可以通过在crontab文件的顶部插入以下行来禁用此行为:

MAILTO=""