如何在多人工作站升級自己的 Python

更新於 發佈於 閱讀時間約 4 分鐘

how to upgrade your python on workstation

現在工作用的程式語言是 python,開發環境是 Linux Debian 10 的一個遠端、多人共同開發的工作站(Workstation),執行環境是 python 的 venv 虛擬環境,PC 跑的 IDE 用的是微軟 vscode,某次我在 IDE 的右下角處注意到一個很小很小的 x 符號,點開後 IDE 提示有 pylint 跟 black formatter 異常,當時不影響我的開發工作就把這事就忘了。在某天的部門分享會上,同事說他 IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級 python 3.8 或以上。

困難相似不相同

在多人一起開發的工作站升級 python 這種主要程式比較複雜,用管理員權限(sudo)升級最快但會影響其他人的開發環境,釐清需求後我想要不影響整體最低限度升級自己的 venv 的虛擬環境,實現多個版本的 venv 虛擬環境做到有多個不同 venv 虛擬環境版本可以切換。

這裡需要提一下 python venv 虛擬環境的運作方式,venv 是一個 python 模組,用這個模組啟動的 python 會在系統上建立一個「乾淨」的 python 執行環境。在系統提示下執行 python3 -m venv .venv 指令,系統會 clone 一份對應版本的 python 執行環境到指定的 .venv 資料夾內,接著執行 source .venv/bin/activate 指令可以啟動 venv 虛擬環境,用 python --version 可以檢查虛擬環境版本是 3.7.3 與系統版本一致。當我們要開發的專案程式需要搭配不同 python 套件組合很適合開多個 venv 虛擬環境來切換進行調適,用 venv 虛擬環境開發最大好處是不會汙染系統的 python 環境,不小心玩壞掉直接砍掉 .venv 目錄即可心裡沒負擔。

(附上 venv 相關指令)

$ python3 -m venv .venv   # 使用模組 venv 建立虛擬環境,虛擬環境的工作目錄是 .venv
$ source .venv/bin/activate # 啟動 venv 虛擬環境,成功啟動後會自動在系統提示字元會附加 (.venv)
(.venv) $ python --version # 檢查 python 版本
(.venv) $ pip install -r requirement.txt # 安裝這個 venv 環境所需的 python 套件(requirement.txt)
(.venv) $ deactivate # 退出 venv 虛擬環境

自己動手樂趣多

所以要在 Local 端不影響系統環境的狀態下升級 python 3.8 以上的版本,更適合的的處理方式是從 Python 網站拉原始碼下來自己編譯,再用編譯出來的新版本 python 來建立 venv 虛擬環境。目標是在自己的帳號底下建立新版本的 python,從下載到編譯按照以下方法,換成其他版本做法一樣。

$ cd ~/   # 先切到自己的 Home 目錄
$ wget https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tar.xz # 用 wget 下載 Python 原始碼
$ tar zxvf Python-3.8.17 # 解壓縮
$ cd Python-3.8.17 # 切換目錄
$ ./configure —enable-optimizations # 建立編譯用組態檔
$ make -j 4 # 編譯程式
$ python --version # 檢查版本,看到 python 3.8.17 成功
$ python -m venv .venv3817 # 用新的 python 建立 venv 環境

完成 python 升級後的 IDE 不再報錯了。

raw-image


小結論

從結果回顧升級過程並不困難,比較困難的是過程中釐清自己需求的跟找到適合自己的方法、然後親自去嘗試。如果你的狀況剛好跟我很接近,是在多人開發的 Linux 工作站、專案需求需要多個版本的 python venv 來調適且需要升級新版本來讓 IDE 的 pylint, black formatter 運作正常的話,不妨直接套用或在這個基礎上打造屬於你的升級方法。

留言
avatar-img
留言分享你的想法!
avatar-img
Warren Lo的沙龍
21會員
62內容數
WarrenLo's 軟體設計武功祕笈
Warren Lo的沙龍的其他內容
2024/09/25
當我們從事軟體開發工作一段時間後,有些人會開始接觸軟體架構設計。由於每個軟體架構設計者的對問題的理解與知識經驗差異會導出不同的設計架構。近期與同事的軟體設計案例經驗交流後,就很希望自己剛開始學習軟體架構設計的時候就有人能用實際的軟體架構設計經驗來帶我入門...
Thumbnail
2024/09/25
當我們從事軟體開發工作一段時間後,有些人會開始接觸軟體架構設計。由於每個軟體架構設計者的對問題的理解與知識經驗差異會導出不同的設計架構。近期與同事的軟體設計案例經驗交流後,就很希望自己剛開始學習軟體架構設計的時候就有人能用實際的軟體架構設計經驗來帶我入門...
Thumbnail
2024/07/02
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
2024/07/02
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
2024/04/08
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
2024/04/08
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
Thumbnail
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
Thumbnail
在實務上,若Python報錯時,若引入的套件越多伴隨的異常訊息會變得越來越複雜,看到一推密密麻麻的內容時,很多時候都想直接跳過。 本文將利用Traceback來讓異常訊息變得更好理解。
Thumbnail
在實務上,若Python報錯時,若引入的套件越多伴隨的異常訊息會變得越來越複雜,看到一推密密麻麻的內容時,很多時候都想直接跳過。 本文將利用Traceback來讓異常訊息變得更好理解。
Thumbnail
情況描述 我們在「【🔒 Python 先修班】教你親手打包專屬套件庫的手作課(pip install…)」有提到如何打包Python讓自己的程式變成套件, 讓其他人可以用pip install的方式進行安裝,😲 But… 我們實際上打包後, 發現到引用的檔案都有被打包進去,但目錄卻未被打包
Thumbnail
情況描述 我們在「【🔒 Python 先修班】教你親手打包專屬套件庫的手作課(pip install…)」有提到如何打包Python讓自己的程式變成套件, 讓其他人可以用pip install的方式進行安裝,😲 But… 我們實際上打包後, 發現到引用的檔案都有被打包進去,但目錄卻未被打包
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News