旧酒换新瓶,新版M1/M2芯片Macos(Ventura)安装古早版本Python2.7(Python2.x)

向下兼容特性是软件开发系统的一个重要指标,它是指一个新的系统或者软件能够与旧的系统或软件兼容并正常运行。这意味着旧系统或软件可以在新系统或软件中使用,而不会出现问题。向下兼容对于提高软件或系统的可用性非常重要,因为它允许用户在不更换旧系统或软件的情况下使用新系统或软件。

我们知道MacOS系统从Monterey12.3版本起就移除了系统内置的Python2,更不消说最新的Ventura13.1了,但有时候我们依然需要古早版本的Python2.x来维护或者更新一些“祖传项目”,不得不承认,这类低版本的“祖传项目”在各种中大型企业内可谓是层出不穷,那么在最新的Ventura13.1系统中,就得重新安装Python2版本。

Docker构建Python2

最简单的方式是通过Docker镜像来构建Python2开发环境,通过使用容器,开发者可以轻松地将开发环境与应用程序隔离开来,这有助于避免依赖冲突和版本混乱。

直接拉取Python2的Docker镜像文件:

docker pull python:2.7.18-slim-stretch

随后运行进入Python2命令行:

docker run -it --name python2 python:2.7.18-slim-stretch

程序返回:

➜  qiniu_async docker run -it --name python2 python:2.7.18-slim-stretch  
Python 2.7.18 (default, Apr 20 2020, 20:08:54)   
[GCC 6.3.0 20170516] on linux2  
Type "help", "copyright", "credits" or "license" for more information.  
>>>

当然了,构建开发环境并非只需要开启命令行,还需要通过pip安装一些古早版本的三方依赖,此时退出Python2命令行:

exit()

随后查看Python2的容器id

➜  ~ docker ps  
CONTAINER ID   IMAGE                        COMMAND     CREATED         STATUS         PORTS     NAMES  
41ef4af5169d   python:2.7.18-slim-stretch   "python2"   8 minutes ago   Up 5 minutes             python2  
➜  ~

进入容器内终端:

docker exec -it 41ef4af5169d /bin/sh

此时,就可是使用pip命令来安装一些老版本的软件了,比如说Django:

pip install django@1.11.29

程序返回:

DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support  
Collecting django  
  Downloading Django-1.11.29-py2.py3-none-any.whl (6.9 MB)  
     |████████████████████████████████| 6.9 MB 8.9 MB/s   
Collecting pytz  
  Downloading pytz-2022.7-py2.py3-none-any.whl (499 kB)  
     |████████████████████████████████| 499 kB 20.7 MB/s   
Installing collected packages: pytz, django  
Successfully installed django-1.11.29 pytz-2022.7  
WARNING: You are using pip version 20.0.2; however, version 20.3.4 is available.  
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.  
# pip list  
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support  
Package    Version  
---------- -------  
Django     1.11.29  
pip        20.0.2   
pytz       2022.7   
setuptools 44.1.0   
wheel      0.34.2

安装成功后,退出容器,然后提交更改:

# exit  
➜  qiniu_async docker commit 41ef python:2.7.18-slim-stretch  
sha256:119b30be68c806bdd4c74ffa3da115ba6ab144a91664a13e728c529c1fd5bca8

如此,就算容器被销毁,再次通过镜像启动容器,也可以保留安装的老版本软件。

HomeBrew安装虚拟环境构建Python2

如果不想使用Docker,也可以考虑Python虚拟环境,它是在主机操作系统之上的一个独立的目录,其中包含一套完全独立的Python解释器和一组库和软件包。它可以在不影响其他项目的情况下,为单个项目创建一套特定的运行环境。

首先安装HomeBrew:

/bin/zsh -c "$(curl -fsSLhttps://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”

随后执行清理和升级:

brew cleanup && brew update

安装虚拟环境:

brew install pyenv

随后安装需要的Python2版本:

pyenv install 2.7.18

接着添加环境变量:

echo 'PATH=$(pyenv root)/shims:$PATH' >> ~/.zshrc

之后就可以开启虚拟环境了:

pyenv init

注意重启终端后,就可以切换Python版本了:

pyenv shell 2.7.18

结语

Docker容器和Python虚拟环境都可以让MacOs系统做到向下兼容开发和维护古早项目,虚拟环境主要用于在同一台机器上管理多个Python项目的依赖关系,而Docker容器则更适用于在不同的机器之间迁移应用程序和环境,可以在任何支持Docker的机器上运行该容器,而无需考虑底层操作系统的差异。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容