1. 程式人生 > >06-Python-包&模組-虛擬環境

06-Python-包&模組-虛擬環境

學習地址:

撩課-Python大資料+人工智慧1
撩課-Python大資料+人工智慧2
撩課-Python大資料+人工智慧3
撩課-Python大資料+人工智慧4
撩課-Python大資料+人工智慧5
撩課-Python大資料+人工智慧6
撩課-Python-GUI程式設計-PyQt5

1.虛擬環境

1).場景
		假如入當前有兩個專案A和B;兩個專案中都需要依賴requests庫;但是需要的版本不一樣
		而預設情況下,不管哪個專案,使用的都是全域性的Python環境
			不能同時安裝使用同一個庫不同版本
			比如:requests庫,要不就是1版本,要不就是2版本;不可能同時存在
		上述場景,造成的問題就是,A和B兩個專案,只能執行一個;如果執行另一個,必須安裝與之匹配的庫版本
2).解決方案
		使用虛擬環境,建立一個完全獨立的區域性Python環境
		在此環境中,安裝所有與這個專案相匹配的庫即可
		總之
			一個專案,使用一個區域性的獨立的“Python環境”;互相之間,沒有干擾
	概念
		這個“區域性的,獨立的Python環境”就稱為:虛擬環境
		完全模擬系統全域性Python環境的使用
			安裝
			解除安裝
			...
	安裝
		是一個三方包,名稱為:
			virtualenv
		安裝命令
			pip install virtualenv
		文件說明
			https://virtualenv.pypa.io/en/latest/userguide/
	使用
		第一步:建立一個區域性的隔離的虛擬環境
			語法
				virtualenv 虛擬環境名稱
				例:virtualenv ENV
			作用效果
				
				
				
			可選引數
				-p
					指明Python版本建立
						到時候就使用此版本的Python直譯器來執行程式碼
						預設是你安裝virtualenv包的時候,所在的Python版本
					例:virtualenv -p C:\Python\36\python3.exe ENV
				--system-site-packages
					繼承系統的三方庫
						到時候,檢索庫的時候,也會到系統的三方庫中找
						如果不加此項,到時候只會在當前的虛擬環境中找
					例:virtualenv --system-site-packages ENV
		第二步:啟用虛擬環境
			語法
				進入到虛擬環境目錄/scripts資料夾中
				activate.bat
			介面效果
				
			作用效果
				在環境的啟用狀態,後續所有的操作都是基於這個虛擬的Python環境
					包的安裝解除安裝檢視等等
					程式碼的執行
				比如:
					pip install requests
						如果不啟用建立的虛擬環境,到時候會被安裝在全域性環境
						啟用後,則會安裝在虛擬環境中
					python3 test.py
						如果test.py中匯入了某個包
						會到虛擬環境中去查詢相關包!
		第三步:在啟用狀態下,想幹啥幹啥
			操作三方庫
			執行py檔案
			...
			注意
				以上所有操作,均作用在被啟用的虛擬環境中
		第四步:退出虛擬環境
			語法
				進入到虛擬環境目錄/scripts資料夾中
				deactivate.bat
			介面效果
				
			作用效果
				退出後,所有後續操作,又會再次的作用於全域性的Python環境中
		第五步:刪除虛擬環境
			直接刪除整個資料夾目錄即可
3).補充
			問題
				以後,把專案給別人的時候,怎樣能保證專案在別人電腦上跑得起來?
			解決
				方案1:
					連同虛擬環境和專案一起拷貝給別人
				方案2:
					在虛擬環境中,凍結依賴需求文字
					把專案和依賴需求文字給別人
					別人自己在本地建立一個新的虛擬環境,並根據依賴需求文字安裝相關庫
	                Pycharm使用虛擬環境
	        	                  實踐

2.虛擬環境進階補充

1).集中式虛擬環境管理
			庫名稱
				virtualenvwrapper-win
				基於virtualenv,開發的一個工具包
			功能作用
				可以將之前分散在各個路徑下的虛擬環境,集中到統一的路徑下進行管理
				方便各個虛擬環境之間的切換
				更加方便的去使用virtualenv
			文件說明
				https://pypi.python.org/pypi/virtualenvwrapper-win
2).使用說明
				建立虛擬環境
					語法
						mkvirtualenv 虛擬環境名稱
					作用效果
						會建立在特定的資料夾中
							windows下,預設在使用者目錄的Envs資料夾中
						啟用新建的虛擬環境
				檢視所有虛擬環境
					語法
						lsvirtualenv
						workon
					作用效果
						列出當下建立的所有虛擬環境
				切換啟用虛擬環境
					語法
						workon 虛擬環境名稱
					作用效果
						啟用指定的虛擬環境
				關閉虛擬環境
					語法
						deactivate
					作用效果
						關閉當下所在的虛擬環境
				刪除虛擬環境
					語法
						rmvirtualenv 虛擬環境名稱
					作用效果
						刪除指定虛擬環境
							刪除對應的資料夾
						退出對應虛擬環境的啟用狀態
3).更加基於專案的虛擬環境管理
			庫名稱
				Pipenv
			功能作用
				pip + virtualenv
				更加基於專案;使得我們更加關注於專案的管理;工具內部封裝了以上兩個功能
			優勢
				不需要再分別使用pip和virtualenv, 直接使用Pipenv即可
					會自動的幫你建立虛擬環境,以及安裝三方庫
					會自動的記錄你專案依賴的所有三方庫
				使用Pipfile和Pipfile.lock取代了requirements.txt
			文件說明
				https://docs.pipenv.org/
			使用說明
				第一步:建立虛擬環境
					命令
						pipenv --two
						pipenv --three
					檢視相關資訊
						檢視專案位置
							pipenv --where
						檢視虛擬環境位置
							pipenv --venv
						檢視直譯器資訊
							pipenv --py
				第二步:啟用虛擬環境
					命令
						pipenv shell
					作用效果
						
				第三步:該幹啥幹啥
					執行程式碼
						python3 xxx.py
							會使用虛擬環境
					安裝包
						命令
							pipenv install [三方庫名]
						作用效果
							1. 檢測當前專案對應的虛擬環境是否存在,不存在則建立
							2. 在虛擬環境中安裝指定的三方庫
								如果沒指定,則不安裝
							3. 在專案目錄下,通過Pipfile和Pipfile.lock記錄當下已經安裝的三方庫
								不存在則建立
						注意:不要使用pip install
							雖然在虛擬環境中安裝對應的包
							但是不會更新Pipfile和Pipfile.lock
					檢視包的依賴結構
						pipenv graph
					解除安裝包
						pipenv install 包名
				第四步:退出虛擬環境
					命令
						exit
						或者直接關閉shell視窗
				第五步:刪除虛擬環境
					命令
						pipenv --rm
				補充
					以後上傳專案(給別人)應該包含哪些檔案?
						包和模組原始碼
						Pipfile和Pipfile.lock
					別人拿到這些內容後,如何使用?
						1. 執行pipenv install
							會自動根據Pipfile建立虛擬環境以及對應的依賴包
						2. 執行pipenv shell
							啟用虛擬環境
補充
		aconada