Python版本+虛擬環(huán)境管理:Conda+Pipenv

前言:一般情況下,為了方便管理,通常一個(gè)python項(xiàng)目搭配一個(gè)虛擬環(huán)境,對(duì)應(yīng)一個(gè)python版本。但是有時(shí)候,我們需要對(duì)項(xiàng)目的python版本升級(jí),框架版本升級(jí),這樣不可避免的就需要兩套環(huán)境,因?yàn)樯?jí)、修改、測(cè)試與現(xiàn)有系統(tǒng)的功能開發(fā)肯定是齊頭并進(jìn)的。那么隨意切換環(huán)境就很有必要了。
pipenv可以通過Pipfile文件方便的管理項(xiàng)目所需要的安裝包,但它只能為一個(gè)項(xiàng)目創(chuàng)建一個(gè)虛擬環(huán)境。conda可以任意創(chuàng)建環(huán)境,但在項(xiàng)目包管理方面卻沒有那么方便。那如果將conda和pipenv結(jié)合起來,使用各自的優(yōu)勢(shì),那么就可以很方便地為一個(gè)項(xiàng)目創(chuàng)建多個(gè)環(huán)境了,可隨意切換,而不會(huì)出現(xiàn)覆蓋的情況。

1. 使用conda create 為項(xiàng)目創(chuàng)建不同python版本的環(huán)境

conda create -n env1_name python=3.6
conda create -n env2_name python=3.10

2.設(shè)置項(xiàng)目的虛擬環(huán)境目錄

cd proj_name
# 激活虛擬環(huán)境
conda activate env1_name
# 設(shè)置WORKON_HOME,將其設(shè)置成env1_name的虛擬目錄
conda env config vars set WORKON_HOME=/path/to/env1_name_virtual_path\

i.e: 
   conda env config vars set WORKON_HOME=/home/shelly/anaconda3/envs/env1_name

#設(shè)置完成之后,需要重新激活環(huán)境才生效
conda activate env1_name

3.設(shè)置PIPFILE(optional)

默認(rèn)是項(xiàng)目下的PIPFILE。如果要測(cè)試不同的python版本,然后里面的包的版本也各不相同,可以設(shè)置不同Pipfile文件。如果Pipfile不是在當(dāng)前項(xiàng)目的目錄下,設(shè)置到其它目錄,則pipenv的當(dāng)前目錄也會(huì)改變,變成Pipfile所在的目錄.

i.e: 比如之前是Python3.6,Django2.2,現(xiàn)在項(xiàng)目需要升級(jí)到Python3.10,Django3.2,為保證兩個(gè)版本在一段時(shí)間內(nèi)可以同時(shí)運(yùn)行??梢栽陧?xiàng)目下再創(chuàng)建一個(gè)Pipefile_3.10的文件,copyPipfile,改變一些pakg的版本。然後在另外一個(gè)虛擬環(huán)境中,將PIPEFILE的環(huán)境變量設(shè)置成Pipfile_3.10.這樣,在pipenv install的時(shí)候,它會(huì)重新生成Pipfile_3.10.lock的lockfile文件

conda env config vars set PIPENV_PIPFILE=/mnt/d/H.H/private_code/envtest/Pipfile

設(shè)置完環(huán)境變量后,記得需要重新激活環(huán)境生效:conda activate venv_name

4、在虛擬環(huán)境下安裝pipenv

conda install pipenv

5.再env1_name虛擬環(huán)境下,創(chuàng)建pipenv的虛擬環(huán)境

pipenv install --python /home/shelly/anaconda3/envs/v2_env/bin/python

在使用pipenv install 之前,可以使用pipenv --venv確認(rèn)一下虛擬環(huán)境,如果沒設(shè)置,確認(rèn)一下WORKON_HOME環(huán)境變量。使用--python指定python解釋器。

不要用sudo,sudo會(huì)使虛擬路徑又變到系統(tǒng)的虛擬路徑去

6.進(jìn)入虛擬環(huán)境

先確保已激活conda的虛擬環(huán)境
然後在conda的虛擬環(huán)境下,使用pipenv shell 進(jìn)入pipenv的虛擬環(huán)境

pipenv shell
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容