python入門系列:Python使用虛擬環境
背景
有兩個項目,A和B。都依賴一個模塊m,但是他們所需要的版本不一樣。默認的情況是,只能安裝一個版本的模塊m。所以一臺電腦上,兩個項目無法同時運行。
解決方案
創建一個獨立的局部python環境,在這個環境中,安裝相關的庫,如果有多個項目,則創建多個局部環境。平行宇宙即視感。
虛擬環境準備
想要創建平行宇宙,還得依賴一個三方包:virtualenv
安裝命令:pip install virtualenv
使用虛擬環境
創建一個虛擬環境
使用命令:virtualenv dirname,也可以先cd進目標目錄,使用virtualenv .
虛擬環境中包括:python解釋器,包管理工具,三方包。
因為這是用基於python3的virtualenv創建的虛擬環境,所以裏面的python解釋器是python3版本的。使用-p參數,可以指定虛擬環境中創建的python解釋起版本。
virtualenv test2 -p python2 :創建了一個基於 python2 的虛擬環境
可以在創建的過程中使用參數 --system-site-packages不加上這個參數,檢索包的時候只在此虛擬環境中進行檢索,加上可以在系統的三方包中找。
激活虛擬環境
使用命令:source dirname/bin/activate
在現在的環境下,所使用的python已經是虛擬環境中的了。
提示符最前面表示了現在所做的所有操作都是在虛擬環境中進行的,這時安裝的三方包都會在虛擬環境中。終端關閉,虛擬環境也會自動關閉。
安裝 pygame 模塊進行測試:
退出虛擬環境
使用命令:deactivate
如果不想保留虛擬環境,直接將環境目錄刪除即可
將項目進行移植
連同虛擬環境一起拷貝給別人(可能出現第三方包安裝太多,項目整體比較龐大的情況)
在虛擬環境中,凍結依賴需求文本,把項目和需求文本給別人,別人自己建一個虛擬環境,根據需求文本安裝相應的庫進行運行即可。
用pycharm操作虛擬環境
新建python項目
註意上面提供了選擇python解釋器的地方,建立新的虛擬環境或者使用全局的解釋器。
項目的結構
跟終端上用命令生成的是差不多的。(main.py是我自己加的)
安裝庫的操作
單擊菜單欄上的File>Setting,選擇左邊的Projiect
可以進行項目解釋器的選擇,以及虛擬環境中三方包的安裝。
虛擬環境的管理
集中式虛擬環境管理
安裝virtualenvwrapper,是基於virtualenv,開發的一個工具包。
創建虛擬環境:mkvirtualenv envname,這個會將虛擬環境創建在特定的虛擬環境中。(但往往和目標項目不在一起,這種管理方式也不太推薦)
查看所有的虛擬環境:lsvirtualenv
激活特定的虛擬環境:workon envname
關閉虛擬環境:deactivate
刪除特定的虛擬環境:rmvirtualenv envame
面向項目的虛擬環境管理
引言
安裝Pipenv,面向項目,有很動東西自動幫我們完成,其他的功能操作也更加簡單,使我們的精力主要放在項目的業務邏輯上。
優勢
不用分別使用pip和virtualenv,直接使用一個工具Pipenv即可。
可以自動幫你創建虛擬環境,安裝第三方庫。
自動記錄項目依賴的第三方庫
使用Pipfile和Pipfile.lock取代了requirements.txt
官方文檔
安裝方式
使用方法
創建虛擬環境
使用命令
pipenv --three :創建基於 python3 的虛擬環境pipenv --two
:創建基於 python2 的虛擬環境
也可以使用命令:pipenv --python python3.6指定項目所用的解釋器版本。
項目中只生成了一個文件,這個文件用來記錄項目所用的python解釋器版本,三方庫信息等,另外,虛擬環境被放在了/home/tc/.local/share/virtualenvs/project2-eXZ-veQ3,進去看看有什麽東西:
還是熟悉的結構,還是熟悉的名稱。
一些基本操作:查看項目路徑,項目依賴的虛擬環境路徑,所使用的python解釋器版本。
激活虛擬環境
使用命令:pipenv shell(要保證當前位置在項目文件夾下)
解釋器已經是虛擬環境中的了。命令行最前面也有提示符。
使用虛擬環境
按照上面的命令安裝pygame庫,結果出奇地慢,最後還卡住了。打開項目文件夾下的Pipfile文件,進行一些配置,修改 url :
這個文件記錄了該項目包的安裝源和安裝的三方包的一些信息。
再次安裝,成功了。可以查看下Pipfile文件:
最後面多了安裝包的記錄信息。使用命令pipenv graph查看三方包及依賴關系(用縮進表示了包之間的依賴)
退出虛擬環境
創建時,提示信息說的比較清楚了,是創建了一個子shell,使用exit命令推出就行了。
刪除虛擬環境
使用命令:pipenv --rm,也要在項目的目錄下使用這個命令。
虛擬環境沒了,項目路徑下的文件還在。為啥還存在?看下面。
項目移植
只要將項目代碼,Pipfile,Pipfile.lock進行轉移即可(也就是整個項目文件夾)。
然後執行pipenv install,會根據配置信息自動還原出原來的虛擬環境。
在Python目錄下有project2和test項目目錄,將project2中的配置文件拷貝到test中,然後執行pipenv install,進行虛擬環境還原。
註:喜歡python + qun:839383765 可以獲取Python各類免費最新入門學習資料!
python入門系列:Python使用虛擬環境