導航:首頁 > 編程語言 > python多版本管理

python多版本管理

發布時間:2023-08-26 12:25:21

『壹』 如何管理python項目

Virtual Environments
首先Python似乎沒有類似Maven/Ant這樣的項目管理工具。那麼當一台機器上有多個python項目,且這些python項目各自有不同的依賴,不想互相干擾時怎麼辦呢?
官方做法是使用Virtual Environments將每個項目互相隔離開。一般情況下,我們使用python解釋器運行python腳本或mole:
>python myScript.py
運行的目錄就是安裝的python解釋器,即python.exe所在的目錄。而Virtual Environments就是給每個項目都生成一個項目獨有的目錄,這個目錄里包含python解釋器,python標准類庫和其他各式各樣的必要文件。這樣每個項目就可以使用不同的解釋器和類庫,且互不幹擾。
創建過程也很簡單。首先找到pyvenv.py所在的目錄,這個文件通常在安裝目錄的自目錄\Tools\scripts下。這是一個生成Virtual Environments的工具。然後運行:
>pyvenv tutorial-env
運行後就會生成一個名為「tutorial-env」的目錄。找到這個目錄,可以發現正如官網所說,這個目錄包含運行python項目所必須的一切文件。使用在各自Virtual Environments目錄里包含的解釋器來運行特定的python項目就可以了。同時,對於那些每個項目使用的特定的依賴(packages或mole),則加入到各自Virtual Environments目錄的類庫子目錄中就可以了。這里需要注意的是。創建完Virtual Environments後,還需要激活。做法很簡單,在上例tutorial-env目錄下執行下的命令即可:
>tutorial-env/Scripts/activate
PIP
PIP是官方提供的安裝python第三方類庫(packages/mole)的工具。它可以去PPI(python packages index)查找或下載第三方類庫。網址是:https://pypi.python.org/pypi
找到上例Virtual Environments目錄下的pip.exe並運行:
>pip install lib_name
即可安裝,其他功能請自行查看手冊。如果是在python的安裝目錄下運行pip,則類庫可以被非Virtual Environments的所有項目使用。PIP安裝的其實是package。
Requirements.txt
在Virtual Environments目錄下運行:
>pip freeze > requirements.txt
可以生產一個當前項目所有依賴類庫及其版本的list文件,文件名就是requirements.txt(當然也可以用別的名字)。文件內容大致如下:
novas==3.1.1.3
numpy==1.9.2
requests==2.7.0
使用requirements.txt的好處就是:
The requirements.txt can then be committed to version control and shipped as part of an application. Users can then install all the necessary packages with 「install -r「:
>pip install -r requirements.txt
這樣就可以方便的管理項目依賴了。如果不使用requirements.txt,直接使用version control存儲Virtual Environments目錄,其他程序員直接下載該目錄就可以開始項目開發的做法也可以。

『貳』 如何在vscode使用指定版本的python

正兒八經開始使用的第一個編輯器就是VS Code,所以基本沒怎麼用過Sublime,比較是無從談起,不過VS Code用起來真是順手啊。配置好的話,直接在VS Code裡面進行Python開發、調試,完全不是問題。
不過使用Python難免需要用到多個Python版本,講一下如何在VS Code中進行配置。

系統中Python多版本管理

之前一直用Anaconda,直接用conda創建並管理多版本Python。最近用著總出現一些莫名其妙的問題,於是卸載了直接換回了官方「純凈版」。
在默認使用Python3.5的情況下,系統中環境變數指向Python3.5,同時在(假如)「C:\Python27」目錄下裝有Python2.7。可以在Python3.5的根目錄中創建名為py2.bat的文件,文件內容:

@ echo off
C:\Python27\Python.exe %*

這樣直接在命令行中輸入py2就可以使用Python2.7開發環境,輸入Python則是默認的Python3.5開發環境。文件名稱py2可以更換成個人習慣的名稱,命令行中輸入相應名稱即可(參考 ART^{9} 的一篇文章)。

安裝第三方庫的話,以下命令安裝到默認Python開發環境:

pip install somelib

安裝到Python2開發環境:

py2 -m pip install somelib

VS Code配置Python開發環境

使用VS Code打開一個文件夾,這個文件夾在VS Code中便是一個工作空間。VS Code會在文件夾中自動創建一個.vscode文件夾,裡面是一些配置文件。

VS code setting

在.vscode中有一個tasks.json文件,這個文件就是進行配置運行環境的,最簡單和常用的配置為(參考 xin053 的一篇文章):

{
"version": "0.1.0",
"command": "python",
"isShellCommand": true,
"args": ["${file}"],
"showOutput": "always"
}

其中command是python可執行文件的路徑,在添加的系統環境變數中之後可以直接寫python,否則需要給出完整路徑。args就是command運行的參數,即當前文件。
在安裝上述方法配置了Python雙版本運行環境後,對tasks.json進行簡單修改就可以了:

{
"version": "0.1.0",
// 在linux和Mac系統中使用"sh".
"command": "cmd",
"isShellCommand": true,
// global args
// 在Linux和Mac系統中使用"-c"(注意大小寫).
"args": ["/C"],
"showOutput": "always",
"suppressTaskName": false,
"tasks": [
{
"taskName": "py2",
// task args
"args": ["${file}"],
},
{
"taskName": "python",
"args": ["${file}"]
}
]
}

注意suppressTaskName屬性,VS Code官網上的解釋為:

If suppressTaskName is true, the command line is command 'global args' 'task args'.
If suppressTaskName is false, it is command 'global args' taskName 'task args'.

也就是說,當把suppressTaskName = false的時候,taskName屬性也被當做command line的參數傳入了。因此,當選擇不同的task的時候,相當於在命令行(或終端)中執行了相應的py2 file.py或python file.py。效果相當棒。
F1輸入run task,選擇py2。

Run task

Choose tas

『叄』 Python 包管理工具

  Python之所以受歡迎不光是因為它簡單易學,更重要的是它有成千上萬的寶藏庫。這些庫相當於是已經集成好的工具,只要安裝就能在Python里使用。它們可以處理各式各樣的問題,無需你再造輪子,而且隨著社區的不斷更新維護,有些庫越來越強大,幾乎能媲美企業級應用。那麼這些工具庫怎麼下載安裝呢?它們被放在一個統一的「倉庫」里,名叫PyPi(Python Package Index),所有的庫安裝都是從這里調度。有了倉庫之後,還需要有管理員,pip就是這樣一個角色。

  pip 是 Python 中的標准庫管理器,這意味著它是一個工具,用它可以來管理 Python 標准庫中其他的包,允許你安裝和管理不屬於 Python 標准庫的其它軟體包,其提供了對 Python 包的查找、下載、安裝、卸載等功能。總的來說,pip的Python第三方庫的大管家,搞懂它,會讓你省很多事。從Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本開始,pip默認包含在Python的安裝程序中,在安裝Python時將會自動被安裝,省事方便。

  Python 的安裝器中自帶了 pip,所以你可以直接使用它,除非你安裝的是更早版本的 Python。你可以通過以下命令來判斷是否已安裝:

如果你的 Python 環境沒有安裝 pip,則可以使用以下方法來手動安裝。pip 安裝文件下載: pypi.org/project/pip…

pip提供的命令不多,但是都很實用

  pip命令默認使用的是國外的pypi鏡像(pypi.python.org),安裝慢不說,有時甚至會導致出現超時等網路問題,有時候為了安裝一個包,失敗重試安裝好幾次都不一定成功。所以,使用國內的pypi鏡像,亦即 切換 pip 源 ,這樣速度上更有保證,不失為一種加速pip安裝第三方包的好方法。常用的鏡像站有阿里雲、清華大學等。其中清華大學開源軟體鏡像站是每 5 分鍾同步一次的,比較推薦使用。阿里雲鏡像站的速度也非常快,這也是我現在在使用的。

  切換切換 pip 源可以是臨時性的,也可以設置為默認。臨時性的,就是在安裝包時,通過pip命令的 -i 選項指定鏡像源即可。例如,臨時使用阿里雲鏡像站作為 pip 源,可以是這樣安裝:

  如果每次安裝時都想要通過鏡像源來安裝,上面的辦法不免有些麻煩。我們可以修改pip的配置文件,將鏡像源寫入到 pip 配置文件中。 對於linux系統 ,修改 ~/.pip/pip.conf 文件 (沒有就創建一個文件夾及文件,文件夾要加「.」,表示是隱藏文件夾):

然後在文件中保存如下內容:

   對於windows系統 ,在C:Users文件夾下的用戶目錄(例如如果當前用戶是Administrator則是C:UsersAdministrator)下創建pip文件夾,然後再在此文件夾下創建pip.ini文件,在文件中寫入一下內容:

  配置完成後再通過 pip config list 查看pip配置。

  我們經常會遇到這樣的開發需求,比如你手頭有多個開發項目,其中項目A要求用python3.7,項目B需要用python3.6,有要求項目A和項目B依賴包相互獨立,互不幹擾。為了滿足這樣的開發需求,我們需要在自己的電腦上安裝多個Python版本,並且項目之間進行環境隔離。因此,我們要想運行這些項目,在工作電腦上就要安裝不同版本的Python。 pyenv 是Python版本管理工具,通過系統修改環境變數來實現Python不同版本的切換,利用它可以在同一台電腦上安裝多個版本的Python,設置目錄級別的Python,還能創建和管理vitual python enviroments。而且所有的設置都是用戶級別的操作,不需要sudo命令。

  首先安裝pyenv,如果你是Mac電腦,那麼推薦使用Homebrew來安裝。

要想升級pyenv,則可以執行:

pyenv安裝完成後,需要將$HOME/.pyenv/bin添加到PATH變數前面,這一步非常關鍵。

也可以採用手動安裝的方式,將pyenv檢出到你想安裝的目錄。

  添加環境變數,將PYENV_ROOT 指向 pyenv 檢出的根目錄,並向 $PATH 添加 $PYENV_ROOT/bin 以提供訪問 pyenv命令的路徑。這里的 shell 配置文件(~/.bash_profile)依不同系統而需作修改,如果使用 Zsh 則需要相應的配置 ~/.zshrc
在使用 pyenv 之後使用 pip 安裝的第三方模塊會自動安裝到當前使用 python 版本下,不會和系統模塊產生沖突。使用 pip 安裝模塊之後,如果沒有生效,記得使用 pyenv rehash 來更新。

安裝完pyenv,可以安裝Python,首先查看可安裝的Python版本:pyenv install -l,接下來開始安裝Python

執行命令 pyenv versions 查看安裝結果。

可以看到,已經成功安裝了Python,安裝的位置在 /Users/dllwh/.pyenv。

可以看到,3.9.9 前面有一個星號,說明成功切換到了 3.9.9 版本,可以執行一下python來驗證。

  Pipenv 是 Python 官方推薦的包管理工具,它綜合了 virtualenv、pip 和 pyenv 三者的功能,你可以使用 pipenv 這一個工具來安裝、卸載、跟蹤和記錄依賴性,並創建、使用和組織你的虛擬環境。

如果你是Mac電腦,那麼推薦使用Homebrew來安裝和升級pipenv:

也可以通過pip來安裝和升級pipenv:

進入到項目目錄中,通過下面的指令為項目創建虛擬環境。

  上面的操作,給pipenv_demo這個項目初始化了一個 Python 3.9.9 的虛擬環境,並在項目錄下生成一個項目依賴包文件 Pipefile。如果系統中沒有 3.9.8 版本的Python,pipenv 會調用 pyenv 來安裝對應的 Python 的版本。默認地,虛擬環境會創建在 ~/.local/share/virtualenvs目錄裡面。我們也可以通過 pipenv --venv查看項目的虛擬環境目錄。可以通過 pipenv --rm 刪除虛擬環境。
如果想更改虛擬環境的目錄,可以在 .bashrc 或 .bash_profile 中,設置環境變數WORKON_HOME,指定虛擬環境的目錄所在位置,比如想將虛擬環境放到~/.venvs目錄,則可以執行下面的命令。

如果希望在項目目錄下創建虛擬環境目錄(.venv),需要在 .bashrc 或 .bash_profile 中配置環境變數PIPENV_VENV_IN_PROJECT:

  pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。

  為項目安裝依賴包到虛擬環境中,使每個項目擁有相互獨立的依賴包,是非常不錯的Python的開發實踐。安裝依賴包到虛擬環境中的方法:

執行完上面的命令後,檢查一下是否安裝成功:

  觀察項目的根目錄下,又多了一個 Pipfile.lock 文件。這兩個文件記錄了此項目的依賴包,這兩個文件的區別是 Pipfile 中安裝的包不包含包的具體版本號,而Pipfile.lock 是包含包的具體的版本號的。如果不想產生 Pipfile.lock 文件,在安裝依賴包的時候,加上 –skip-lock 選項即可。
在使用pipenv的時候,常常會安裝過程比較慢,這個是因為pipenv創建的 Pipfile 中默認的Pypi源是python官方的 pypi.python.org/simple。我們國內…

  為了避免每次都要指定–pypi-mirror,我一般會在創建好Pipfile以後,將文件中 source 塊下的 url 欄位,設置為國內的 pypi 源,我推薦的是清華的Pypi源或者阿里源,具體設置如下:

如果是要刪除虛擬環境中的第三方包,執行:

用git管理項目時候,要把Pipfile和Pipfile.lock加入版本跟蹤。這樣clone了這個項目的同學,只需要執行:

就可以安裝所有的Pipfile中 [packages]部分列出來的包了,並且自動為項目在自己電腦上創建了虛擬環境。

上面的方法都是安裝Pipfile中列出來的第三方包的最新版本,如果是想安裝Pipfile.lock中固定版本的第三方依賴包,需要執行:

如果項目之前使用requirements.txt來管理依賴的,那麼使用pipenv安裝所有依賴可以採用類似pip的方法:

  虛擬環境創建好了之後,就可以在裡面進行開發了。如果在命令行下開發,則在項目目錄下執行 pipenv shell ,就進入到了虛擬環境中,在這個環境中,已經包含安裝過的所有依賴包了,接下來就可以利用這些依賴包進行開發工作了。如果是用Pycharm進行開發,就更簡單了,直接用Pycharm打開項目即可。可以從Pycharm中的左側導航欄裡面看到External Libraries顯示的是虛擬環境中的Python解釋器了。
在虛擬環境中執行開發好的程序,有兩種方式,一種是前面提到的先執行pipenv shell進入到虛擬環境後,再執行python程序;另一種方式,則是執行pyenv run,比如在虛擬環境中執行基於pytest框架編寫的測試用例,只需要執行下面的命令即可:


作者:獨淚了無痕
鏈接:https://juejin.cn/post/7063699409703272485

『肆』 python利器——pipenv和pyenv介紹

也可以看我CSDN的博客:
https://blog.csdn.net/u013332124/article/details/90049921

在寫python程序時,經常會被版本管理以及第三方包管理搞的很頭疼。這兩天看了業內相關的解決方案,覺的很不錯。

我們經常在開發時會需要用到多個python版本,為了解決版本問題,比較常見的做法是修改環境變數來切換版本,但是修改環境變數終究比較麻煩。另外,我們在安裝新的python版本時也會小心翼翼,避免影響到系統自帶的python版本。這個問題都可以通過pyenv來解決。

pyenv可以在系統中安裝多個python版本,並且不影響到系統自帶的python,而且通過pyenv我們可以快速的在多個python版本之間來回切換

安裝pyenv之前需要保證電腦上已經安裝了git:

安裝好了之後,使用很簡單,比如我們要安裝python3.7.3的版本,可以直接通過pyenv安裝

之後可以通過以下命令快速切換python命令

其實pyenv的原理也很簡單,就是對python版本進行統一管理,之後也是通過修改環境變數來切換python命令的指向。但是通過pyenv我們只要執行一個命令就可以了,我們可以看到所有通過pyenv安裝的python版本都放在 ~/.pyenv/versions 目錄下,也更加方便管理

pyenv 支持的參數也比較少:

shell表示切換的版本僅當前版本有效,session關閉後就失效了

global表示全局,重啟也不會影響更改

local表示臨時生效,但是系統重啟後就不會生效了

pyenv雖然解決了python版本切換的問題,但是依舊無法解決各個項目的第三方包管理的問題。比如說A項目需要用requests版本是1.0,而B項目需要requests版本是2.0。這時候pipenv就派上用場了。值得一提的是,pipenv也是寫requests的那位大佬寫的。

pipenv可以為我們的項目自動創建和管理一個虛擬環境 。並且會在項目目錄下創建一個Pipfile來管理第三方包。

pipenv的安裝很簡單:

使用也很簡單,進入項目目錄後,使用以下任一命令創建一個虛擬環境:

創建成功後會在項目目錄下生產一個Pipfile文件來管理第三方包。之後可以通過以下命令安裝requests

這樣requests的安裝只對當前項目生效 。之後可以通過以下命令進行虛擬環境運行相關腳本:

或者通過以下命令直接使用虛擬環境運行命令:

pipenv的原理也很簡單,我們輸入 pipenv -venv 就可以得到虛擬環境的目錄。然後在執行pipenv shell時,會看到以下輸出語句:

其實就是激活虛擬環境的activate,設置一下相關環境變數。通過pipenv安裝的第三方包也都在 ~/.local/share/virtualenvs/monitor-9E5KrdNU/lib 目錄下。

有了pipenv後,其實virtualenv已經沒什麼用了。但是也有人在線上部署的時候結合virtualenv和pipenv來部署,因此這里做個簡單的介紹。

安裝virtualenv也很簡單:

之後創建一個虛擬環境:

其實就是創建了一個venv的目錄,這個目錄下有bin、lib、include,其中通過虛擬環境安裝的第三方包都會放在lib下。

通過以下命令進入虛擬環境:

和pipenv基本一樣,就是通過activate設置了環境變數。

之後通過 deactivate 退出虛擬環境,其實就是恢復了環境變數。

使用pipenv在本地開發好後,總要部署到線上。如果線上也能直接安裝pipenv固然最好,但是不好在伺服器安裝pipenv的情況,怎麼辦呢?

1、如果線上使用的是virtualenv管理虛擬環境的話

可以直接在virtualenv的虛擬環境中安裝pipenv,這樣就可以直接運行我們基於pipenv構建的項目了

2、 如果線上連virtualenv都沒有的話

通過pipenv導出requirements.txt,然後到線上安裝第三方包

pipenv介紹

pyenv介紹

virtualenv介紹

『伍』 python中有很多包管理工具有哪些yolk

1、pip是python的管理工具,是一個現代的,通用的Python包管理工具,提供了對 Python 包的查找、下載、安裝、卸載的功能。

如以下命令:

$ pip install requests,

$ pip search xml,

$ pip show beautifulsoup4,

$ pip uninstall requests。

2、Anaconda是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項,Anaconda包括Conda、Python以及一大堆安裝好的工具包,比如:numpy、pandas等。

(5)python多版本管理擴展閱讀:

pip的快捷按鍵使用:

install:安裝包安裝 (Install packages.)

downloa:下載下載包 (Download packages.)

uninstall:卸載卸載包 (Uninstall packages.)

Anaconda默認安裝:

python-3.6.0-0 ...

_license-1.1-py36_1 ...

alabaster-0.7.9-py36_0 ...

anaconda-client-1.6.0-py36_0 ...

anaconda-navigator-1.4.3-py36_0 ...

astroid-1.4.9-py36_0 ...

astropy-1.3-np111py36_0 ...

babel-2.3.4-py36_0 ...

backports-1.0-py36_0 ...

beautifulsoup4-4.5.3-py36_

『陸』 python多版本和虛擬環境(pyenv+conda or virtualenv)

2.7.X
3.X
Anaconda2
Anaconda3

pyenv是一個管理各個python版本的管理器。可以在系統里同時保留多個python版本,等需要時定義需要的版本。

項目地址

看項目地址中的readme

查看pyenv可安裝的版本列表

安裝和卸載指定版本,會將python版本安裝在 $(pyenv root)/versions/ 中

查看當前已經安裝了的python版本。輸出內容中,system關鍵字是系統python版本。 *表示當前環境所處的版本。

全局切換為anaconda科學計算環境(不建議這么做),做了如果要恢復,則將最後一個參數改為--unset

當前環境接環。在當前目錄以下。如果要恢復,則將最後一個參數改為--unset

本來這是一個單獨的軟體用來虛擬一個python版本環境,讓每個工作環境都有一套獨立的python各自的第三方插件互不影響。然而在 pyenv 下有一個插件 pyenv-virtualenv 他可以在 pyenv 的環境下擔負起 virtualenv 的事情。(如果使用的是原生python可以用這個工具,如果用的是anaconda則不用這個,用下一章說的conda工具來完成虛擬環境)

項目地址

看項目地址中的readme

在當前目錄下創建一個 python 版本為2.7.1的環境,環境名字為 env271。 這個環境的真實目錄位於 ~/.pyenv/versions/

(創建時並不激活)激活當前環境。此時已經進入虛擬環境,在當前環境下所有pip等操作都不會影響系統環境和系統路徑。

離開已激活的環境,切換回系統環境。但並沒有被刪除,下次依舊可以啟動。

刪除一個環境,當然也可以到真實目錄下刪除文件夾。

本來不想用這個的,但是因為 pyenv-virtualenv 有一些問題,無法很好的管理conda環境,比如有一些anaconda 自帶的一些命令(例如pylint)無法被使用。因此還是老老實實使用 conda 來管理虛擬環境。

conda 是自帶於 anaconda 的所以並不需要額外安裝,如果在 anaconda 環境中就可以使用。conda 不僅可以進行 環境管理 ,還可以 包管理 ,和對 anaconda和conda 進行 版本升級

由於conda使用方法太多,因此這里羅列一些常用的主要是一些虛擬環境的命令。具體的到 官網文檔 去查看一下。

首先conda工具是需要在anaconda環境下的,因此先執行 pyenv local anaconda3-4.2.0 進入anaconda環境後就可以執行conda工具了。

創建一個虛擬環境。可以指定名字,指定包,甚至制定python(這樣的話就python版本管理了所以不建議使用,python版本管理交給pyenv),所以命令中 python=x.x 可以不寫

羅列已經創建的環境,兩條命令是一樣的。

激活一個環境。和virtualenv一樣,創建不等於激活。激活後才能真正使用虛擬環境。
如果發生錯誤 Error: activate must be sourced. Run 'source activate envname' 說明activate命令沒有找對,導致錯誤。吧命令改成

這樣就能成功建立虛擬環境了。

刪除一個虛擬環境。

復制一個虛擬環境。這個是個不錯的好功能。

conda還能吧環境配置文件導出,在另一台機器上重新讀入配置文件,就能復刻你的環境了。

conda 還能進行包的管理。調用的是 pip 所以也很棒。

查看當前環境已安裝包,用-n指定後,就是查看某個環境下的已安裝包

為某個指定的環境安裝包,升級包,刪除包。

它還能升級自身和anaconda和python的版本。

它和pip一樣也能設置安裝包的鏡像位置。其餘還有能使用R命令等等,都到官網文檔中搜索一下。

閱讀全文

與python多版本管理相關的資料

熱點內容
安卓怎麼把照片分成三屏壁紙 瀏覽:950
金燕卡銀行app叫什麼 瀏覽:11
隨機數概率演算法 瀏覽:625
除了刷機精靈還有什麼app 瀏覽:268
android參考手冊 瀏覽:639
重慶加密微硅粉工廠 瀏覽:752
pubg未來之役安卓怎麼登錄 瀏覽:210
漫威超級戰爭如何更改伺服器 瀏覽:487
怎麼找學校伺服器ip 瀏覽:557
cmd命令變數 瀏覽:685
程序員與建造師 瀏覽:972
雲電腦搭建什麼伺服器 瀏覽:506
dev編譯器怎麼改成英文版 瀏覽:345
我的世界有什麼好伺服器嗎 瀏覽:585
perl對比python 瀏覽:544
三星s8怎樣回復安全文件夾 瀏覽:28
shell編輯命令 瀏覽:583
mac如何建一個私密文件夾 瀏覽:301
3nvm伺服器怎麼搭建 瀏覽:404
雲伺服器處理視頻 瀏覽:813