亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python多版本開發(fā)環(huán)境管理工具介紹

 更新時(shí)間:2019年07月03日 10:39:19   作者:肖哥_測(cè)試不將就  
這篇文章主要介紹了Python多版本開發(fā)環(huán)境管理工具介紹的相關(guān)資料,在Python開發(fā)中,有些情況下,我們可能面臨在一臺(tái)機(jī)器上同時(shí)安裝多版本Python的需求,需要的朋友可以參考下

前言

在Python開發(fā)中,有些情況下,我們可能面臨在一臺(tái)機(jī)器上同時(shí)安裝多版本Python的需求。比如:

有多個(gè)Python項(xiàng)目,每個(gè)項(xiàng)目依賴不同的Python版本。

有一個(gè)Python項(xiàng)目,它需要同時(shí)支持多個(gè)Python版本。

那么,如何高效地在單臺(tái)機(jī)器上實(shí)現(xiàn)多個(gè)版本Python(具體來說,這里Python指的是Python解釋器)的安裝和維護(hù)呢?

除此之外,我們還可能面臨在一臺(tái)機(jī)器上安裝多個(gè)版本的某個(gè)Python第三方庫(kù)的需求。比如:有多個(gè)Python項(xiàng)目,每個(gè)項(xiàng)目依賴于不同版本的Python第三方庫(kù)requests。這時(shí)候,如何在單臺(tái)機(jī)器上實(shí)現(xiàn)多版本Python requests庫(kù)的安裝和維護(hù)呢?

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

多版本Python管理

實(shí)現(xiàn)多版本Python管理的工具叫做pyenv。它的安裝命令為:

curl https://pyenv.run | bash

安裝完成后,需要進(jìn)行簡(jiǎn)單配置。將下面幾行配置信息添加到文件~/.bashrc中,然后執(zhí)行命令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是基于源代碼進(jìn)行Python的編譯和安裝的。因此,我們需要先安裝編譯相關(guān)的一些依賴包。由于這些依賴是操作系統(tǒng)相關(guān)的。因此,不同的操作系統(tǒng),安裝命令不同。

以常見的Ubuntu/Debian系統(tǒng)為例,安裝命令為:

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

現(xiàn)在就可以使用pyenv安裝Python了。安裝新版本之前,我們先查看系統(tǒng)當(dāng)前安裝的Python版本:

root@hzettv53:~# pyenv versions
* system (set by /root/.pyenv/version)
root@hzettv53:~# python -V
Python 2.7.12

可見,當(dāng)前使用的是操作系統(tǒng)自帶的Python,其版本為2.7.12。這時(shí),如果我們需要安裝一個(gè)新的版本,例如Python 3.7.2, 只需執(zhí)行命令:

pyenv install -v 3.7.2

注意,由于pyenv是基于Python源代碼進(jìn)行編譯安裝,因此這一步驟會(huì)有點(diǎn)慢,需要耐心等待。安裝完成后,查看系統(tǒng)中的Python版本:

root@hzettv53:~# pyenv versions
* system (set by /root/.pyenv/version)
3.7.2
root@hzettv53:~# python -V
Python 2.7.12

可以看到,系統(tǒng)中已經(jīng)有兩個(gè)版本的Python了。但是當(dāng)前使用的仍然是系統(tǒng)版本。如果想要使用新安裝的版本,只需:

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版本。如果只想在當(dāng)前文件夾中使用Python 3.7.2,那么可以執(zhí)行:pyenv local 3.7.2;如果只想在當(dāng)前Shell環(huán)境中使用Python 3.7.2,那么可以執(zhí)行:pyenv shell 3.7.2。

如果同時(shí)設(shè)置了global, local和shell三種Python版本,那么哪一種會(huì)真正生效呢?這里有一個(gè)優(yōu)先級(jí)排序,即shell > local > global。舉例來說,如果先后執(zhí)行了pyenv local 3.7.2和pyenv global 3.7.3,那么由于local的優(yōu)先級(jí)高于global,所以當(dāng)前生效的Python版本是3.7.2。

這樣,我們便很方便地實(shí)現(xiàn)了單一機(jī)器上安裝多個(gè)版本的Python,并且可以根據(jù)實(shí)際需要,靈活地切換Python版本。

多虛擬環(huán)境管理

不同項(xiàng)目之間,不僅依賴的Python版本可能不同,而且依賴的Python第三方庫(kù)的版本也可能不同。我們將項(xiàng)目所依賴的Python及其第三方庫(kù)統(tǒng)一稱為虛擬環(huán)境。如果同時(shí)存在多個(gè)Python項(xiàng)目,各自依賴不同的虛擬環(huán)境,如何有效管理呢?

這時(shí),我們?nèi)匀豢梢允褂胮yenv來達(dá)成我們的目標(biāo)。使用下述命令可以創(chuàng)建一個(gè)指定Python版本的虛擬環(huán)境。

pyenv virtualenv <python_version> <environment_name>

虛擬環(huán)境的名稱建議體現(xiàn)Python項(xiàng)目名稱。例如,我們有一個(gè)叫做myproject的項(xiàng)目,并且基于Python 3.7.2進(jìn)行開發(fā),那么可以執(zhí)行命令:

pyenv virtualenv 3.7.2 myprojectenv

這樣,我們便創(chuàng)建了一個(gè)名為myprojectenv的虛擬環(huán)境。那么如何使用它呢?我們?cè)谛枰褂眠@個(gè)虛擬環(huán)境的地方(例如,cd到項(xiàng)目myproject的文件夾路徑),執(zhí)行以下命令即可:

pyenv local myprojectenv

這時(shí),我們可以看到,當(dāng)前使用的Python和pip都指向的是虛擬環(huán)境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

這意味著,我們此時(shí)用pip命令安裝的所有Python第三方包,都是安裝到了虛擬環(huán)境myprojectenv的路徑下,而不是系統(tǒng)路徑。這樣,我們便實(shí)現(xiàn)了Python項(xiàng)目和其所依賴的Python開發(fā)環(huán)境(即虛擬環(huán)境)的綁定。不同的Python項(xiàng)目,完全可以各自使用不同的Python虛擬環(huán)境,互不影響。

那么,如果一個(gè)Python項(xiàng)目需要使用兩種Python虛擬環(huán)境呢?我們只需要?jiǎng)?chuàng)建兩個(gè)虛擬環(huán)境(例如myprojectenv和myprojectenv2),并且在使用時(shí)進(jìn)行切換即可:

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

總結(jié)

開發(fā)環(huán)境的高效管理是軟件工程中的一個(gè)難題,尤其是需要同時(shí)維護(hù)多個(gè)環(huán)境的時(shí)候。pyenv提供了在單臺(tái)機(jī)器上實(shí)現(xiàn)多版本Python和多類型Python虛擬環(huán)境的有效管理。pyenv的使用十分簡(jiǎn)單,易于上手。

github地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Django實(shí)現(xiàn)把兩個(gè)模型類的數(shù)據(jù)聚合在一起

    使用Django實(shí)現(xiàn)把兩個(gè)模型類的數(shù)據(jù)聚合在一起

    這篇文章主要介紹了使用Django實(shí)現(xiàn)把兩個(gè)模型類的數(shù)據(jù)聚合在一起,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python異常處理與日志記錄的操作過程

    Python異常處理與日志記錄的操作過程

    Python提供了強(qiáng)大的異常處理機(jī)制和靈活的日志記錄功能,使開發(fā)人員能夠更輕松地管理代碼中的錯(cuò)誤和跟蹤應(yīng)用程序的執(zhí)行過程,在本文中,我們將探討使用Python進(jìn)行異常處理與日志記錄的最佳實(shí)踐,以及一些案例代碼來說明這些概念,需要的朋友可以參考下
    2024-04-04
  • 使用Pytorch訓(xùn)練two-head網(wǎng)絡(luò)的操作

    使用Pytorch訓(xùn)練two-head網(wǎng)絡(luò)的操作

    這篇文章主要介紹了使用Pytorch訓(xùn)練two-head網(wǎng)絡(luò)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python中的np.argmax() 返回最大值索引號(hào)

    python中的np.argmax() 返回最大值索引號(hào)

    這篇文章主要介紹了python中的np.argmax() 返回最大值索引號(hào)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Python self參數(shù)詳細(xì)介紹

    Python self參數(shù)詳細(xì)介紹

    事實(shí)上,Python只是規(guī)定,無(wú)論是構(gòu)造方法還是實(shí)例方法,最少要包含一個(gè)參數(shù),并沒有規(guī)定該參數(shù)的具體名稱。之所以將其命名為self,只是程序員之間約定俗成的一種習(xí)慣,遵守這個(gè)約定,可以使我們編寫的代碼具有更好的可讀性
    2023-01-01
  • python優(yōu)雅實(shí)現(xiàn)代碼與敏感信息分離的方法

    python優(yōu)雅實(shí)現(xiàn)代碼與敏感信息分離的方法

    這篇文章主要介紹了python優(yōu)雅實(shí)現(xiàn)代碼與敏感信息分離的方法,在flask中,python-dotenv 可以無(wú)縫接入項(xiàng)目中,只要你的項(xiàng)目中存在 .env 或者 .flaskenv 文件,他就會(huì)提示你是否安裝 python-dotenv,需要的朋友可以參考下
    2022-05-05
  • python使用Turtle庫(kù)畫畫寫名字

    python使用Turtle庫(kù)畫畫寫名字

    Turtle庫(kù)是Python語(yǔ)言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),本篇文章小編就帶大家學(xué)習(xí)python利用Turtle庫(kù)畫畫寫名字的相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • python自動(dòng)化unittest yaml使用過程解析

    python自動(dòng)化unittest yaml使用過程解析

    這篇文章主要介紹了python自動(dòng)化unittest yaml使用過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python 切片和range()用法說明

    python 切片和range()用法說明

    首先需要明白,可迭代對(duì)象,按照正數(shù)索引(正序)是從0開始的,按照負(fù)數(shù)索引(逆序)是從-1開始的
    2013-03-03
  • 14個(gè)Python處理Excel的常用操作分享

    14個(gè)Python處理Excel的常用操作分享

    自從學(xué)了Python后就逼迫用Python來處理Excel,所有操作用Python實(shí)現(xiàn)。目的是鞏固Python,與增強(qiáng)數(shù)據(jù)處理能力。本文為大家整理了14個(gè)Python處理Excel的常用操作,非常好用,希望對(duì)大家有所幫助
    2023-03-03

最新評(píng)論