前言:一般情況下,為了方便管理轿塔,通常一個python項目搭配一個虛擬環(huán)境,對應一個python版本。但是有時候勾缭,我們需要對項目的python版本升級揍障,框架版本升級,這樣不可避免的就需要兩套環(huán)境俩由,因為升級毒嫡、修改、測試與現(xiàn)有系統(tǒng)的功能開發(fā)肯定是齊頭并進的幻梯。那么隨意切換環(huán)境就很有必要了兜畸。
pipenv可以通過Pipfile文件方便的管理項目所需要的安裝包,但它只能為一個項目創(chuàng)建一個虛擬環(huán)境碘梢。conda可以任意創(chuàng)建環(huán)境咬摇,但在項目包管理方面卻沒有那么方便。那如果將conda和pipenv結合起來煞躬,使用各自的優(yōu)勢肛鹏,那么就可以很方便地為一個項目創(chuàng)建多個環(huán)境了,可隨意切換汰翠,而不會出現(xiàn)覆蓋的情況龄坪。
1. 使用conda create 為項目創(chuàng)建不同python版本的環(huán)境
conda create -n env1_name python=3.6
conda create -n env2_name python=3.10
2.設置項目的虛擬環(huán)境目錄
cd proj_name
# 激活虛擬環(huán)境
conda activate env1_name
# 設置WORKON_HOME昭雌,將其設置成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
#設置完成之后复唤,需要重新激活環(huán)境才生效
conda activate env1_name
3.設置PIPFILE(optional)
默認是項目下的PIPFILE。如果要測試不同的python版本烛卧,然后里面的包的版本也各不相同佛纫,可以設置不同Pipfile文件。如果Pipfile不是在當前項目的目錄下总放,設置到其它目錄呈宇,則pipenv的當前目錄也會改變,變成Pipfile所在的目錄.
i.e: 比如之前是Python3.6局雄,Django2.2,現(xiàn)在項目需要升級到Python3.10甥啄,Django3.2,為保證兩個版本在一段時間內可以同時運行【娲睿可以在項目下再創(chuàng)建一個Pipefile_3.10的文件蜈漓,copyPipfile,改變一些pakg的版本宫盔。然後在另外一個虛擬環(huán)境中融虽,將PIPEFILE的環(huán)境變量設置成Pipfile_3.10.這樣,在pipenv install的時候灼芭,它會重新生成Pipfile_3.10.lock的lockfile文件
conda env config vars set PIPENV_PIPFILE=/mnt/d/H.H/private_code/envtest/Pipfile
設置完環(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確認一下虛擬環(huán)境茴迁,如果沒設置,確認一下WORKON_HOME環(huán)境變量萤衰。使用--python指定python解釋器笋熬。
不要用sudo,sudo會使虛擬路徑又變到系統(tǒng)的虛擬路徑去
6.進入虛擬環(huán)境
先確保已激活conda的虛擬環(huán)境
然後在conda的虛擬環(huán)境下腻菇,使用pipenv shell 進入pipenv的虛擬環(huán)境
pipenv shell