推薦一款Python開發環境管理神器

2021-09-24 19:59:26 字數 4315 閱讀 3017

在python開發中,有些情況下,我們可能面臨在一台機器上同時安裝多版本python的需求。比如:

那麼,如何高效地在單台機器上實現多個版本python(具體來說,這裡python指的是python直譯器)的安裝和維護呢?

除此之外,我們還可能面臨在一台機器上安裝多個版本的某個python第三方庫的需求。比如:有多個python專案,每個專案依賴於不同版本的python第三方庫requests。這時候,如何在單台機器上實現多版本pythonrequests庫的安裝和維護呢?

本文介紹一款神器。它提供了最簡潔的方法,讓上述兩種需求同時得到滿足。

實現多版本python管理的工具叫做pyenv。它的安裝命令為:

curl  | bash

複製**

安裝完成後,需要進行簡單配置。將下面幾行配置資訊新增到檔案~/.bashrc中,然後執行命令exec "$shell",讓配置生效。

export path="$home/.pyenv/bin:$path"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

複製**

接著,可以通過檢視pyenv版本來檢查安裝和配置是否成功:

root@hzettv53:~# pyenv -v

pyenv 1.2.12

複製**

由於pyenv是基於源**進行python的編譯和安裝的。因此,我們需要先安裝編譯相關的一些依賴包。由於這些依賴是作業系統相關的。因此,不同的作業系統,安裝命令不同。

以常見的ubuntu/debian系統為例,安裝命令為:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

複製**

現在就可以使用pyenv安裝python了。安裝新版本之前,我們先檢視系統當前安裝的python版本:

root@hzettv53:~# pyenv versions

* system (set by /root/.pyenv/version)

root@hzettv53:~# python -v

python 2.7.12

進python群:835017344,獲取python學習資料

可見,當前使用的是作業系統自帶的python,其版本為2.7.12。這時,如果我們需要安裝乙個新的版本,例如python 3.7.2, 只需執行命令:

pyenv install -v 3.7.2

複製**

注意,由於pyenv是基於python源**進行編譯安裝,因此這一步驟會有點慢,需要耐心等待。安裝完成後,檢視系統中的python版本:

root@hzettv53:~# pyenv versions

* system (set by /root/.pyenv/version)

3.7.2

root@hzettv53:~# python -v

python 2.7.12

複製**

可以看到,系統中已經有兩個版本的python了。但是當前使用的仍然是系統版本。如果想要使用新安裝的版本,只需:

root@hzettv53:~# pyenv global 3.7.2

root@hzettv53:~# pyenv versions

system

* 3.7.2 (set by /root/.pyenv/version)

root@hzettv53:~# python -v

python 3.7.2

複製**

這裡命令pyenv global 3.7.2改變了全域性的python版本。如果只想在當前資料夾中使用python 3.7.2,那麼可以執行:pyenv local 3.7.2;如果只想在當前shell環境中使用python 3.7.2,那麼可以執行:pyenv shell 3.7.2

如果同時設定了global, local和shell三種python版本,那麼哪一種會真正生效呢?這裡有乙個優先順序排序,即shell > local > global。舉例來說,如果先後執行了pyenv local 3.7.2pyenv global 3.7.3,那麼由於local的優先順序高於global,所以當前生效的python版本是3.7.2。

這樣,我們便很方便地實現了單一機器上安裝多個版本的python,並且可以根據實際需要,靈活地切換python版本。

不同專案之間,不僅依賴的python版本可能不同,而且依賴的python第三方庫的版本也可能不同。我們將專案所依賴的python及其第三方庫統一稱為虛擬環境。如果同時存在多個python專案,各自依賴不同的虛擬環境,如何有效管理呢?

這時,我們仍然可以使用pyenv來達成我們的目標。使用下述命令可以建立乙個指定python版本的虛擬環境。

pyenv virtualenv 複製**
虛擬環境的名稱建議體現python專案名稱。例如,我們有乙個叫做myproject的專案,並且基於python 3.7.2進行開發,那麼可以執行命令:

pyenv virtualenv 3.7.2 myprojectenv

複製**

這樣,我們便建立了乙個名為myprojectenv的虛擬環境。那麼如何使用它呢?我們在需要使用這個虛擬環境的地方(例如,cd到專案myproject的資料夾路徑),執行以下命令即可:

pyenv local myprojectenv

複製**

這時,我們可以看到,當前使用的python和pip都指向的是虛擬環境myprojectenv

root@hzettv53:~/workspace/test# pyenv which python

/root/.pyenv/versions/myprojectenv/bin/python

root@hzettv53:~/workspace/test# pyenv which pip

/root/.pyenv/versions/myprojectenv/bin/pip

複製**

這意味著,我們此時用pip命令安裝的所有python第三方包,都是安裝到了虛擬環境myprojectenv的路徑下,而不是系統路徑。這樣,我們便實現了python專案和其所依賴的python開發環境(即虛擬環境)的繫結。不同的python專案,完全可以各自使用不同的python虛擬環境,互不影響。

那麼,如果乙個python專案需要使用兩種python虛擬環境呢?我們只需要建立兩個虛擬環境(例如myprojectenvmyprojectenv2),並且在使用時進行切換即可:

root@hzettv53:~/workspace/myproject# pyenv local myprojectenv

root@hzettv53:~/workspace/myproject:~# python -v

python 3.7.2

root@hzettv53:~/workspace/myproject# pyenv local myprojectenv2

root@hzettv53:~/workspace/myproject:~# python -v

python 2.7.12

進python群:835017344,獲取python學習資料

開發環境的高效管理是軟體工程中的乙個難題,尤其是需要同時維護多個環境的時候。pyenv提供了在單台機器上實現多版本python和多型別python虛擬環境的有效管理。pyenv的使用十分簡單,易於上手。

推薦一款網遊

三月王朝 也叫帝國霸略 挺不錯的,優點 20 多人約好晚上一起打都城,很帶勁。qq飛車採用了世界級的物理引擎physx,採納專業車手的建議,手感全面超越市場領先產品。qq飛車完全免費,qq號碼即可登陸。專為qq使用者設計的時尚的人物造型,爽快的漂移快感,帥哥與美女同在,速度與激情並存,帶你進入眩目的...

推薦一款辦公軟體!

前天電腦goust了,發現沒有裝win office等辦公軟體,呵呵,之前就想用下國產的這款辦公軟體了,現在終於有了很好的藉口來使用了,從次丟棄win office!軟體介紹 wps office 2007個人版對個人使用者永久免費,包含wps文字 wps wps演示三大功能模組,與ms offic...

Crab,一款python上優秀的推薦系統引擎

今天,逛網頁發現了一款推薦系統的引擎 crab。它是python的乙個開源包,整個推薦系統的構架已經寫好,其中的推薦演算法可以自己定義,在此構架上進行推薦演算法的研究可以提高效率。1 crab的安裝 1 在安裝之前,需要一些python包和其他一些,這些是numpy,scipy,setuptools...