快速打造多版本Python環境

2022-01-29 編程派

作者:pylixm

原文:https://pylixm.cc/posts/2016-06-19-Virtualenv-install.html

全文約 5044 字,讀完可能需要 7 分鐘。

配置環境:

CentOS release 6.8

pyenv 20160509

在工作開發中,一直使用 virtualenv 來管理python的包環境。很好的解決了不同項目使用不同python包的需求。對於多python版本的問題如何解決一直無解,雖然可以安裝多個版本的python,靠絕對路徑或靠創建虛擬環境的時候指定python( virtualenv -p)版本來解決,但總感覺不是那麼的優雅。

同事推薦了 pyenv ,一直沒用過,特從網上找了些資料試著配置了下,記錄如下。

pyenv vs virtualenv

pyenv 是針對 python 版本的管理,通過修改環境變量的方式實現;

virtualenv 是針對python的包的多版本管理,通過將python包安裝到一個模塊來作為python的包虛擬環境,通過切換目錄來實現不同包環境間的切換。

pyenv 原理

pyenv 的美好之處在於,它並沒有使用將不同的 $PATH 植入不同的 shell 這種高耦合的工作方式,而是簡單地在 $PATH 的最前面插入了一個墊片路徑(shims):

~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有對 Python 可執行文件的查找都會首先被這個 shims 路徑截獲,從而架空了後面的系統路徑。

pyenv 安裝使用自動安裝

pyenv 提供了自動安裝的工具,執行命令安裝即可:

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

需保證系統有 git ,否則需要新安裝git工具。

手動安裝

將 pyenv 檢出到你想安裝的目錄。建議路徑為:$HOME/.pyenv

$ cd

$ git clone git://github.com/yyuu/pyenv.git .pyenv

添加環境變量。PYENV_ROOT 指向 pyenv 檢出的根目錄,並向 $PATH 添加 $PYENV_ROOT/bin 以提供訪問 pyenv 這條命令的路徑

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile

$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

這裡的 shell 配置文件(~/.bash_profile)依不同 Linux 而需作修改---- Zsh:~/.zshenv;Ubuntu:~/.bashrc

向 shell 添加 pyenv init 以啟用 shims 和命令補完功能

$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

配置文件的位置同上一條一樣需要修改

重啟 shell(因為修改了 $PATH)

$ exec $SHELL

pyenv 常用命令python配置

$ pyenv versions - 查看系統當前安裝的python列表

$ pyenv install -v 3.5.1 - 安裝python

$ pyenv uninstall 2.7.3 - 卸載python

$ pyenv rehash - 創建墊片路徑(為所有已安裝的可執行文件 (如:~/.pyenv/versions//bin/) 創建 shims,因此,每當你增刪了 Python 版本或帶有可執行文件的包(如 pip)以後,都應該執行一次本命令)

python切換

$ pyenv global 3.4.0 - 設置全局的 Python 版本,通過將版本號寫入 ~/.pyenv/version 文件的方式。

$ pyenv local 2.7.3 - 設置面向程序的本地版本,通過將版本號寫入當前目錄下的 .python-version 文件的方式。通過這種方式設置的 Python 版本優先級較 global 高。

pyenv 會從當前目錄開始向上逐級查找 .python-version 文件,直到根目錄為止。若找不到,就用 global 版本。

$ pyenv shell pypy-2.2.1 - 設置面向 shell 的 Python 版本,通過設置當前 shell 的 PYENV_VERSION 環境變量的方式。這個版本的優先級比 local 和 global 都要高。-unset 參數可以用於取消當前 shell 設定的版本。

$ pyenv shell --unset

python優先級

shell > local > global

pyenv 插件: pyenv-virtualenv安裝

使用自動安裝pyenv 後,它會自動安裝部分插件,通過 pyenv-virtualenv 插件可以很好的和 virtualenv結合:

[root@linux3311 ~]# cd .pyenv/plugins/

[root@linux3311 plugins]# ll

insgesamt 24

drwxr-xr-x. 4 root root 4096 19. Jun 05:17 pyenv-doctor

drwxr-xr-x. 5 root root 4096 19. Jun 05:18 pyenv-installer

drwxr-xr-x. 4 root root 4096 19. Jun 05:18 pyenv-update

drwxr-xr-x. 7 root root 4096 19. Jun 05:18 pyenv-virtualenv

drwxr-xr-x. 4 root root 4096 19. Jun 05:18 pyenv-which-ext

drwxr-xr-x. 5 root root 4096 19. Jun 05:17 python-build

使用

$ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10

若不指定python 版本,會匯報認使用當前環境python版本。

pyenv virtualenvs

pyenv activate

pyenv deactivate

pyenv uninstall my-virtual-env

使用pyenv 來管理python,使用 pyenv-virtualenv 插件來管理多版本 python包。

此時,還需注意,當我們將項目運行的 env 環境部署到生產環境時,由於我們的python 包是依賴python 的,需要注意生產環境的python版本問題(詳見 這裡)。

以上為個人拙見,歡迎小夥伴們留言交流。小夥伴們若有更好的python 多版本環境管理方案,希望留言不吝賜教,在此,先謝過了!

題圖:pexels,CC0 授權。

點擊閱讀原文,查看更多 Python 教程和資源。

相關焦點

  • Python 多版本切換工具- Pyenv/Virtualenv 及 Anaconda 科學計算環境的配置
    學習python有時希望在python2.7環境下,有時希望在python3.4環境下,該怎麼辦呢?Anconda的包也不知道適合在什麼環境下工作?解決多python環境下,python版本切換的工具–pyenv應運而生。
  • 基於pyenv和virtualenv搭建python多版本虛擬環境
    想像下面一種場景:你的新項目在Python 3.3下面開發,而你維護的舊項目,卻工作在Python 2.7之上,為了完成工作,你不得不安裝兩個Python解釋器,並為每個解釋器配置virtualenv,在你調試執行的時候,不得不適用冗長的全路徑調用解釋器,或者不斷地修改你的環境變量。天哪,你再次陷入與你的工作無關的,煩人的事情中。pyenv的出現,就是來拯救你的。
  • Python環境搭建之Anaconda快速學習
    Anaconda 是一個開源免費的Python集成管理工具,自帶了數據科學相關的依賴包,支持多平臺Win/linux/OS X。2.Anaconda的特點•安裝簡單,自動配置python運行環境,不需要像pycharm那樣需要單獨下載python,並且免費,非常適合新手操作。•包含了180多個科學包及其依賴項,非常適合數據計算領域開發。
  • Python(28):下載命令pip和快速搭建環境
    收錄於話題 #python 一
  • 多版本python共存
    同一臺電腦中,如果同時安裝python2和python3環境,會在執行python命令時出現錯誤,作業系統會找到默認的配置進行執行。
  • 使用Anaconda3配置多版本Python虛擬開發環境詳細步驟
    有時候,為了使用比較乾淨的開發環境,或者為了測試一些版本的擴展庫,我們可能需要創建虛擬開發環境,在不同的虛擬開發環境中,只安裝需要的擴展庫,這樣可以最大程度上減少不同擴展庫之間的兼容性帶來的衝突或其他問題
  • Python開發利器 如何將Vim打造為強大的Python開發環境
    本文介紹就是如何將Vim打造成強大的Python開發環境。 ——EarlGrey@編程派下面是最終效果預覽。驗證安裝確保你已經安裝了7.3版本以上、支持Python的Vim編輯器。你可以再次運行vim --version進行確認。如果你想知道Vim中使用的Python版本,你可以在編輯器中運行:python import sys; print(sys.version)。
  • Vscode+ Anconda打造舒適的Python環境(19)
    今天我們就基於Anconda+vscode Anaconda打造舒適的Python環境網址:https://code.visualstudio.com/安裝Anconda關於Anconda大家可以看我之前發的帖子,連結Python 入門安裝完Anconda,默認已經給你安裝了python安裝 Python 插件不是說你裝了python就可以運行了
  • Virtualenv--手把手帶你打造Python虛擬環境
    這個文件是用來保存項目所需要的python擴展庫版本的。不同項目使用的python和擴展庫的版本之間存在著各種差異。也就是說,git clone到本地的項目用你本地的環境可能運行不起來。那怎麼才能把python環境同步呢?
  • 使用pyenv管理多個Python版本依賴環境
    每當在系統中執行一個命令時,例如python或pip,作業系統就會在PATH的所有路徑中從左至右依次尋找對應的命令。因為是依次尋找,因此排在左邊的路徑具有更高的優先級。而pyenv做的,就是在PATH最前面插入一個$(pyenv root)/shims目錄。這樣,pyenv就可以通過控制shims目錄中的Python版本號,來靈活地切換至我們所需的Python版本。
  • Python多環境管理——pyenv
    於是便考慮一個多版本的Python環境,碰巧就在Github上看到了一個?22.3k的東西:配置環境變量這一步就是把PYENV以及更新後的PATH配置成環境變量,官方文檔按照shell類型進行了分類,根據自己情況選擇即可。
  • Python環境配置保姆教程(Anaconda、Jupyter、GPU環境)!
    這篇文章打算把一些必備的python環境配置過程記錄下來,這樣不管是新到了公司實習或者就職,還是新換了電腦,都可以借鑑這篇快速把環境搭建起來啦 😉由於我也是重裝了系統,所以算是從0開始搭建python環境,這次從anaconda安裝開始, 然後到cuda的相關安裝配置,再到cudnn的安裝配置,然後從anaconda中建立虛擬tensorflow
  • Python版本、庫、包管理器、虛擬環境、開發環境,一次搞清楚!
    python 版本Python 版本指的是 Python 解析器本身的版本。由於 Python3 不能與 Python2 兼容,而且兩大陣營之爭持續了很長時間,導致一些軟體庫需要設配兩種版本的 Python,同時開發者可能需要在一個環境中,部署不同版本的 Python,對開發和維護造成了麻煩。
  • 使用sublime打造一個終極版的Python開發編輯環境
    有些人可能從版本1開始就已經是sublime的高級用戶了。本文的重點是在sublime text 3中為那些可能沒有充分利用sublime潛能的人設置一個終極版的python開發設置環境。簡介Sublime Text 是一個文本編輯器。具有漂亮的用戶界面和強大的功能,例如代碼縮略圖,Python的插件,代碼段等。
  • Win10+Vscode搞定python開發環境
    vscode的幾個遠程插件 wsl ssh 和docker 都很不錯,用的很順手但是相比pycharm,vscode上手需要進行環境的配置,還要安裝各種插件(插件的介紹一般都是英文),這對新手來說有點難度,下面就介紹一下,win10系統下如何從0開始使用vscode搭建一個Python的開發環境初始環境我的初始環境是win10企業版 1809的 LTSC版本
  • Python環境安裝
    Anaconda集成環境Python3.7如果是linux環境包括MacOs,系統環境中會默認安裝python2.7
  • Python零基礎教程:Python環境搭建
    Python可應用於多平臺包括 Linux 和 Mac OS X。你可以通過終端窗口輸入 "python" 命令來查看本地是否已經安裝Python以及Python的安裝版本。Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。)
  • 使用conda建立及管理python虛擬環境
    使用conda建立及管理python虛擬環境平時我們在使用python進行各種不同的開發時,最常遇到的問題是我們需要選擇不同的python版本,以及各種各樣的包(package)。Anaconda這個軟體相當於MacOS中的HomeBrew,內置conda命令,可以快速地對python的包(package)進行管理。
  • 用這個方法解決Python多版本共存問題,簡單粗暴!
    在命令行輸入「Python」時,命令行會去系統中查找名稱為Python的可執行文件,通過 計算機基礎–Windows PATH變量、命令行、搜索路徑 一文中的描述,實際上會按照如下的優先級順序查找Python可執行文件:1.從當前工作目錄查找。2.環境變量系統PATH。3.環境變量用戶PATH。
  • python基礎開發環境配置
    python 安裝第三方安裝軟體python安裝後必要設置jupyter notebook 分析環境搭建python安裝包下載二進位源碼直接下載安裝(支持跨平臺,推薦)源碼編譯安裝(更加靈活,但要求對源碼更熟悉)推薦到[python官網](https://www.python.org/)下載對應版本的安裝包安裝。