1. 程式人生 > >使用 pyenv + virtualenv 打造多版本 Python 開發環境

使用 pyenv + virtualenv 打造多版本 Python 開發環境

  • 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 提供了自動安裝的工具,執行命令安裝即可:

1 curl-Lhttps://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

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

手動安裝

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

12 $cd$git clonegit://github.com/yyuu/pyenv.git .pyenv

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

12 $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 和命令補完功能

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

配置檔案的位置同上一條一樣需要修改

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

1 $exec$SHELL

pyenv 常用命令

python配置

  • $ pyenv versions — 檢視系統當前安裝的python列表
  • $ pyenv install -v 3.5.1 — 安裝python
  • $ pyenv uninstall 2.7.3 — 解除安裝python
  • $ pyenv rehash — 建立墊片路徑(為所有已安裝的可執行檔案建立 shims,如:~/.pyenv/versions/*/bin/*,因此,每當你增刪了 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 結合:

12345678910 [root@linux3311~]# cd .pyenv/plugins/[root@linux3311 plugins]# llinsgesamt24drwxr-xr-x.4root root409619.Jun05:17pyenv-doctordrwxr-xr-x.5root root409619.Jun05:18pyenv-installerdrwxr-xr-x.4root root409619.Jun05:18pyenv-updatedrwxr-xr-x.7root root409619.Jun05:18pyenv-virtualenvdrwxr-xr-x.4root root409619.Jun05:18pyenv-which-extdrwxr-xr-x.5root root409619.Jun05:17python-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 多版本環境管理方案,希望留言不吝賜教,在此,先謝過了!

參考

相關推薦

使用 pyenv + virtualenv 打造版本 Python 開發環境

CentOS release 6.8 pyenv 20160509 在工作開發中,一直使用 virtualenv 來管理python的包環境。很好的解決了不同專案使用不同python包的需求。對於多python版本的問題如何解決一直無解,雖然可以安裝多個 版本的python,靠絕對路徑或靠建立虛擬環境的

pyenvvirtualenv 搭建單機版本python 虛擬開發環境

作為主流開發語言, 用python 開發的程式越來越多。 方便的是大多linux系統裡面都預設集成了python, 開發可以隨時隨地開始。 但有時候這也成為了一個短板, 比如說有時候我們需要開發和除錯一些需要安裝在預設python路徑裡的程式, 反覆地修改和安裝會使系統目錄越來越亂,這對於一些有潔癖的程式設計

pyenvvirtualenv搭建單機版本python虛擬開發環境

作為主流開發語言, 用python 開發的程式越來越多。 方便的是大多linux系統裡面都預設集成了python, 開發可以隨時隨地開始。 但有時候這也成為了一個短板, 比如說有時候我們需要開發和除錯一些需要安裝在預設python路徑裡的程式, 反覆地修改和安裝會使系統目錄越來

python-virtualenv(個獨立開發環境)

獨立開發 virtual class virt rtu 開發環境 啟用 獨立 bin 1. 安裝virtualenv$ sudo yum install python-virtualenv 2. 創建開發環境$ virtualenv env_name 3. 啟用開發環境$

CentOS6 下版本python管理(pyenv+python+virtualenv+ipython)

pyenv是個多版本python管理器,可以同時管理多個python版本共存,如pypy,miniconde等等 1 環境準備 安裝相關軟體和pyenv 1.1 安裝相關軟體 yum install -y readline readline-devel readline-static opens

MacPython版本共存,個獨立Python開發環境切換。

一、安裝配置pyenv 經常遇到這樣的情況: 系統自帶的Python是2.x,自己需要Python 3.x,測試嚐鮮;系統是2.6.x,開發環境是2.7.x由於Mac機器系統保護的原因,預設的Python中無法對PIP一些包升級,需要組建新的Python環境。此時需要在

如何在同一系統下同時安裝版本python開發環境

    在開發過程中,有的時候我們需要用到不同的python版本,或者在執行他人專案的時候也會遇到此種情況,怎麼下載安裝不同版本的python,此處不再贅述,下面是官網連結點選開啟連結      根據需要下載下來   python2的版本是msi安裝包,python3是exe

Centos7下安裝python版本並存開發環境

系統環境:CentOS 7.2 x86_64,該系統自帶了python2.7版本。但是專案中用的是python3.5版本,為了保證Centos系統的正常執行,需要安裝python3.5與python2.7共存的開發環境。 安裝相關包 # yum inst

Anaconda環境版本python配置指導

實現 新環境 說明 安裝 切換 克隆 ans 文件 fine Anaconda多環境多版本python配置指導 來自:http://www.jianshu.com/p/d2e15200ee9b 原文地址:http://conda.pydata.org/docs/test-

Ubuntu下安裝pyenv管理版本python

.com 安裝pyenv version dash pytho brush 我們 ash lvm 安裝Python版本管理工具——Pyenv git clone git://github.com/yyuu/pyenv.git ~/.pyenv e

20171231 Ubuntu+Anaconda+VSCode配置Python開發環境

寫下題目再看時間,已經是2017年的最後一天了。昨晚的通宵弄得整個人很憔悴,生命在於折騰,而我已經不再年輕。網上在晒關於回憶18歲照片相關的東西,而我,而我,而我永遠保持著18歲的容顏……^^ 參考: stackflow解決方案 晚上回來又開始折騰Ubuntu。我用Ananco

Anaconda建立新虛擬環境並建立jupyter notebook相應的kernel ( 含版本python )

首先建立虛擬環境 conda create -n <your_env_name> python==x.x  #建立x.x版本的python環境 activate <your_env_name>   #進入該虛擬環境,否則使用pip等命令會呼叫到預設的全域性

python行註釋 && Eclipse和PyDev搭建完美Python開發環境(Ubuntu篇)

python本身不帶多行註釋,編輯時每行敲一個“#”相當的不方便,其實可以有變通的方法 1. 把要註釋的塊用if 0:包起來,需要注意縮排 2. 把要註釋的塊用'''    '''包起來,也需要注意縮排。不過一般情況下'''是用來做function doc的,所以

Windows環境下,Anaconda 安裝版本python,以及TensorFlow安裝

最近想學習TensorFlow,一直用python,所以想借用TF在python的拓展包。 主要問題是,TF 僅僅對python3.5的支援比較好,其他版本的python不是說不支援,只是筆者限於能力,多次嘗試都沒能成功。 下面進入正題: 1. 官網下載 Anaconda

70.在Mac上打造方便好用的Python開發環境

說明 本文是對之前的部落格“在Ubuntu上打造方便好用的Python開發環境”的補充,說明了在Mac上從無到有打造方便好用的Python開發環境的方法,同時增加了對C語言開發環境的配置說明。 iTerm2 Mac自帶終端軟體是Termina

linux下版本python環境配置

1. 依賴 pyenv安裝使用git # yum install git -y # yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zl

Ubuntu中使用pyenv來安裝版本Python

安裝pyenv 選擇pyenv的安裝路徑,Ubuntu系統可以選擇安裝在home目錄下,在命令視窗輸入如下命令: $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv 定義環境變數,在命令視窗依

在Ubuntu上打造方便好用的Python開發環境 --- ZSHELL

http://blog.csdn.NET/a464057216/article/details/52070922 我使用的是Ubuntu 14.04 LTS,按照我的操作步驟做完,終端Terminal的使用效果如下:   vim編輯Python檔案時使用效果如下:

(一)搭建python3.4環境之ubuntu14.04下安裝版本Python(親測有效)

轉自:http://www.cnblogs.com/ningvsban/p/4384995.html 今天一不小心又把ubuntu系統給完壞了,因為我把python3解除安裝了,然後就。。。好了,不廢話了,接下來就說一下如何在ubuntu下管理python的多

vs2015配置python開發環境python版本切換

1.安裝vs2015,不詳細說明,按照正常步驟安裝即可。 2.建立工程,File->New->Project,如下圖選擇Python->Python Application,填寫ProjectName,path,solutionName,點選ok建立專案。