什么是虛擬環境
這是 Python 3.3 的新特性:https://www.python.org/dev/peps/pep-0405/
假設自己電腦主機的 Python 環境稱為系統環境,而默認情況下,虛擬環境和系統環境是完全隔離的
每個系統環境下可以有多個虛擬環境
每個虛擬環境都有自己的 Python 二進制文件及單獨的包安裝目錄,可以在虛擬環境中安裝屬於自己的 Python 包,而系統環境、其他虛擬環境並不會擁有這些 Python 包
一句話總結
Python 虛擬環境主要是為不同 Python 項目創建一個隔離的環境,每個項目都可以擁有獨立的依賴包環境,而項目間的依賴包互不影響
為什么要虛擬環境
說下背景
假設一個電腦包含多個 Python 項目
每個項目所需的 Python 版本不一致,比如:Python 2.X、Python 3.X
每個項目所需的依賴包不一致,比如 A 項目只要 Selenium 相關依賴包,B 項目只要 Appium 相關依賴包
不同項目用同一個依賴包,但依賴包版本可能不一致
假設現在不用虛擬環境會有什么問題?
了解下第三方庫的安裝目錄
默認情況下,Python 第三方庫都是裝在系統固定目錄的,比如 Mac 電腦
import site
site.getsitepackages()
['/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages']
電腦上所有項目都會從這個目錄去存儲、查找第三方庫(站點庫)
帶來的問題
不同項目使用同一個依賴包,但使用不同版本的依賴包時,意味着當開發 A 項目的時候,要裝一次依賴包 A 版本,轉開發 B 項目時,先要卸載依賴包 A 版本,再重裝 B 版本...
一個環境下要安裝所有項目需要的依賴包,所以當某個項目需要生成 requirement.txt 的時候,會帶上很多用不上的依賴包,要刪還得手工一個個刪....
通過 venv 操作虛擬環境
Python 3.5 后推薦使用 venv 來創建虛擬環境
創建虛擬環境
python3 -m venv fastapi_test
fastapi_test 是虛擬環境名字,可以自定義
激活虛擬環境
source <環境名稱>/bin/activate
可以看到虛擬環境中的 Package 只有最基礎的 pip、setuptools
關閉虛擬環境
deactivate
Pycharm 項目關聯新創建的虛擬環境
先在項目目錄下創建好虛擬環境
Python Interpreter 選中虛擬環境
安裝項目所需要的庫
Pycharm 創建虛擬環境
選中 Python Interpreter
查看更多 Interpreters
添加一個新的 Interpreters
選擇 New environment,默認選項即可,確定
查看虛擬環境的目錄
剛剛創建的兩個虛擬環境的目錄其實是一樣的
bin
與虛擬環境交互的文件
ll
total 72
-rw-r--r-- 1 polo staff 8.6K Sep 14 09:26 Activate.ps1
-rw-r--r-- 1 polo staff 1.9K Sep 14 09:26 activate
-rw-r--r-- 1 polo staff 882B Sep 14 09:26 activate.csh
-rw-r--r-- 1 polo staff 2.0K Sep 14 09:26 activate.fish
-rwxr-xr-x 1 polo staff 269B Sep 14 08:40 pip
-rwxr-xr-x 1 polo staff 269B Sep 14 08:40 pip3
-rwxr-xr-x 1 polo staff 269B Sep 14 08:40 pip3.9
lrwxr-xr-x 1 polo staff 9B Sep 14 08:40 python -> python3.9
lrwxr-xr-x 1 polo staff 9B Sep 14 08:40 python3 -> python3.9
lrwxr-xr-x 1 polo staff 39B Sep 14 08:40 python3.9 -> /usr/local/opt/python@3.9/bin/python3.9
include
編譯 Python 包的 C 頭文件
lib
包含Python 版本的副本(python3.9),以及安裝每個依賴包的 site-packages 文件夾
pwd
/Users/polo/Downloads/FastAPI_project/fastapi_test/lib/python3.9/site-packages
ll
total 224
drwxr-xr-x 3 polo staff 96B Sep 14 09:27 pycache
drwxr-xr-x 5 polo staff 160B Sep 14 08:40 _distutils_hack
-rw-r--r-- 1 polo staff 152B Sep 14 08:40 distutils-precedence.pth
drwxr-xr-x 28 polo staff 896B Sep 14 09:27 fastapi
drwxr-xr-x 8 polo staff 256B Sep 14 09:27 fastapi-0.68.1.dist-info
drwxr-xr-x 8 polo staff 256B Sep 14 08:40 pip
drwxr-xr-x 10 polo staff 320B Sep 14 08:40 pip-21.1.1.dist-info
drwxr-xr-x 7 polo staff 224B Sep 14 08:40 pkg_resources
drwxr-xr-x 53 polo staff 1.7K Sep 14 09:27 pydantic
drwxr-xr-x 9 polo staff 288B Sep 14 09:27 pydantic-1.8.2.dist-info
drwxr-xr-x 41 polo staff 1.3K Sep 14 08:40 setuptools
drwxr-xr-x 11 polo staff 352B Sep 14 08:40 setuptools-56.0.0.dist-info
drwxr-xr-x 27 polo staff 864B Sep 14 09:27 starlette
drwxr-xr-x 8 polo staff 256B Sep 14 09:27 starlette-0.14.2.dist-info
drwxr-xr-x 8 polo staff 256B Sep 14 09:27 typing_extensions-3.10.0.2.dist-info
-rw-r--r-- 1 polo staff 107K Sep 14 09:27 typing_extensions.py
從虛擬環境生成 requirement.txt
先看看有哪些包
pip list
Package Version
fastapi 0.68.1
pip 21.1.1
pydantic 1.8.2
setuptools 56.0.0
starlette 0.14.2
typing-extensions 3.10.0.2
pip freeze
在激活虛擬環境下敲
pip freeze > requirement.txt
這樣生成的 requirement.txt 文件就只包含虛擬環境中已安裝的依賴包了!
包管理利器 popety
TODO
到此這篇關於Python 虛擬環境venv詳解的文章就介紹到這了,更多相關Python 虛擬環境venv內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
