舊酒換新瓶,新版M1/M2芯片Macos(Ventura)安裝古早版本Python2.7(Python2.x)

向下兼容特性是軟件開(kāi)發(fā)系統(tǒng)的一個(gè)重要指標(biāo)牲剃,它是指一個(gè)新的系統(tǒng)或者軟件能夠與舊的系統(tǒng)或軟件兼容并正常運(yùn)行糙麦。這意味著舊系統(tǒng)或軟件可以在新系統(tǒng)或軟件中使用歇攻,而不會(huì)出現(xiàn)問(wèn)題驮樊。向下兼容對(duì)于提高軟件或系統(tǒng)的可用性非常重要粗恢,因?yàn)樗试S用戶在不更換舊系統(tǒng)或軟件的情況下使用新系統(tǒng)或軟件柑晒。

我們知道MacOS系統(tǒng)從Monterey12.3版本起就移除了系統(tǒng)內(nèi)置的Python2,更不消說(shuō)最新的Ventura13.1了眷射,但有時(shí)候我們依然需要古早版本的Python2.x來(lái)維護(hù)或者更新一些“祖?zhèn)黜?xiàng)目”匙赞,不得不承認(rèn)佛掖,這類低版本的“祖?zhèn)黜?xiàng)目”在各種中大型企業(yè)內(nèi)可謂是層出不窮,那么在最新的Ventura13.1系統(tǒng)中涌庭,就得重新安裝Python2版本芥被。

Docker構(gòu)建Python2

最簡(jiǎn)單的方式是通過(guò)Docker鏡像來(lái)構(gòu)建Python2開(kāi)發(fā)環(huán)境,通過(guò)使用容器坐榆,開(kāi)發(fā)者可以輕松地將開(kāi)發(fā)環(huán)境與應(yīng)用程序隔離開(kāi)來(lái)拴魄,這有助于避免依賴沖突和版本混亂。

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

docker pull python:2.7.18-slim-stretch

隨后運(yùn)行進(jìn)入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.  
>>>

當(dāng)然了席镀,構(gòu)建開(kāi)發(fā)環(huán)境并非只需要開(kāi)啟命令行匹中,還需要通過(guò)pip安裝一些古早版本的三方依賴,此時(shí)退出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  
?  ~

進(jìn)入容器內(nèi)終端:

docker exec -it 41ef4af5169d /bin/sh

此時(shí)豪诲,就可是使用pip命令來(lái)安裝一些老版本的軟件了顶捷,比如說(shuō)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

如此服赎,就算容器被銷毀,再次通過(guò)鏡像啟動(dòng)容器交播,也可以保留安裝的老版本軟件重虑。

HomeBrew安裝虛擬環(huán)境構(gòu)建Python2

如果不想使用Docker,也可以考慮Python虛擬環(huán)境秦士,它是在主機(jī)操作系統(tǒng)之上的一個(gè)獨(dú)立的目錄嚎尤,其中包含一套完全獨(dú)立的Python解釋器和一組庫(kù)和軟件包。它可以在不影響其他項(xiàng)目的情況下伍宦,為單個(gè)項(xiàng)目創(chuàng)建一套特定的運(yùn)行環(huán)境芽死。

首先安裝HomeBrew:

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

隨后執(zhí)行清理和升級(jí):

brew cleanup && brew update

安裝虛擬環(huán)境:

brew install pyenv

隨后安裝需要的Python2版本:

pyenv install 2.7.18

接著添加環(huán)境變量:

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

之后就可以開(kāi)啟虛擬環(huán)境了:

pyenv init

注意重啟終端后,就可以切換Python版本了:

pyenv shell 2.7.18

結(jié)語(yǔ)

Docker容器和Python虛擬環(huán)境都可以讓MacOs系統(tǒng)做到向下兼容開(kāi)發(fā)和維護(hù)古早項(xiàng)目次洼,虛擬環(huán)境主要用于在同一臺(tái)機(jī)器上管理多個(gè)Python項(xiàng)目的依賴關(guān)系关贵,而Docker容器則更適用于在不同的機(jī)器之間遷移應(yīng)用程序和環(huán)境,可以在任何支持Docker的機(jī)器上運(yùn)行該容器卖毁,而無(wú)需考慮底層操作系統(tǒng)的差異揖曾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市亥啦,隨后出現(xiàn)的幾起案子炭剪,更是在濱河造成了極大的恐慌,老刑警劉巖翔脱,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奴拦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡届吁,警方通過(guò)查閱死者的電腦和手機(jī)错妖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門绿鸣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人暂氯,你說(shuō)我怎么就攤上這事潮模。” “怎么了痴施?”我有些...
    開(kāi)封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵擎厢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我辣吃,道長(zhǎng)锉矢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任齿尽,我火速辦了婚禮沽损,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘循头。我一直安慰自己绵估,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布卡骂。 她就那樣靜靜地躺著国裳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪全跨。 梳的紋絲不亂的頭發(fā)上缝左,一...
    開(kāi)封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音浓若,去河邊找鬼渺杉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挪钓,可吹牛的內(nèi)容都是我干的是越。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼碌上,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼倚评!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起馏予,我...
    開(kāi)封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤天梧,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后霞丧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呢岗,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敷燎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂筝。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箩言,死狀恐怖硬贯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陨收,我是刑警寧澤饭豹,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站务漩,受9級(jí)特大地震影響拄衰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饵骨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一翘悉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧居触,春花似錦妖混、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弊予,卻和暖如春祥楣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汉柒。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工误褪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碾褂。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓振坚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親斋扰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渡八,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容