venv
是 Python 內建的虛擬環境模組,它是目前最受歡迎的 Python 虛擬環境管理工具之一。venv
可讓您輕鬆地建立和管理隔離的 Python 環境,這些隔離的環境,可以包含專案所需的特定套件和環境設定,而不會影響到系統的全域 Python 執行環境。
在本教學中,我們將向您展示如何使用 venv
建立虛擬環境,並在這個環境中安裝和管理 Python 套件。我們還將介紹如何導出和導入套件列表,以便輕鬆地在不同環境之間遷移專案。使用 venv
,您可以快速建立和測試 Python 應用程式,而無需擔心套件衝突或版本不兼容的問題。
Table of Contents
環境建立
安裝 Python
首先,請確保已經安裝了 Python。你可以從Python 官方網站下載並安裝最新版本的 Python。
創建venv虛擬執行環境
在你想要建立虛擬環境的目錄中,打開命令提示字元(CMD)或終端機(Terminal),然後輸入以下指令:
※Python 3.3 版本以後,venv 已經被包含在 Python 的標準庫中,所以不需要額外安裝。確保你的系統已經安裝了 Python 3.3 或更高版本。
※此處注意:官網範例為python -m venv [venv目錄名稱],但此處rdpapa建議用venv即可,這樣只要你在你自己的專案中,發現有venv目錄就可以知道這台有裝venv,如果隨便取會變得比較不好管理專案
範例專案:mytest
範例路徑:D:\my_python_proj\mytest
# Windows
D:\my_python_proj\mytest> python -m venv venv
or
#ubuntu
D:\my_python_proj\mytest> python3 -m venv venv
指令執行完後,會在當前目錄下創建一個名為 venv 的虛擬環境資料夾,其中包含 Python 編譯器、標準庫和各種支持文件的副本。。
啟動venv虛擬環境
1.在Windows上:
D:\my_python_proj\mytest\> venv\Scripts\activate
2.在macOS或Linux上:
/var/my_python_proj/mytest/> source venv/bin/activate
Windows上啟動成功的畫面(此時已經進入venv的虛擬環境)
安裝套件
1.先查詢目前venv虛擬環境下有裝那些套件
一個新的venv環境套件一定是最少的
(venv) D:\my_python_proj\mytest>pip list
Package Version
---------- -------
pip 22.3.1
setuptools 65.5.0
(venv) D:\my_python_proj\mytest>
2.安裝 Python 套件
在虛擬環境中,你可以使用 pip 來安裝 Python 套件。例如:
(venv) D:\my_python_proj\mytest> pip install requests
(venv) D:\my_python_proj\mytest> pip list
Package Version
------------------ ---------
certifi 2024.8.30
charset-normalizer 3.3.2
idna 3.8
pip 22.3.1
requests 2.32.3
setuptools 65.5.0
urllib3 2.2.2
(venv) D:\my_python_proj\mytest>
離開venv虛擬環境
現在,我們可以建立一個 WordPress 容器。我們將使用以下命令建立一個名為 wordpress
的容器,並將其連結到 mysql
容器。我們還將將 WordPress 容器的 80 端口映射到主機的 8080 端口:
(venv) D:\my_python_proj\mytest> deactivate
D:\my_python_proj\mytest>
從ubuntu crontab排程中執行venv環境設定的程式
建立一個讓排程觸發的bash檔案,本範例我們叫run_script.sh(可以自行修改成你要的名稱crontab上可以對應就好)
新增Script.sh內容如下
#!/bin/bash
source venv/bin/activate
python3 main.py
deactivate
※注意:main.py為D:\my_python_proj\mytest>專案下的主要執行檔案喔!!!
編輯crontab的內容
#檢查網站服務是否中斷, 每十分鐘執行
*/10 * * * * cd /mnt/python/mytest/ && /bin/bash /mnt/python/mytest/run_script.sh >> /mnt/python/log/mytest_status.log 2>&1
如果你要驗證排程中是否有真的進入venv環境,可以在你的main.py加上以下語法把venv的pip list印出來驗證,可以暫時把主程式先mark起來,只執行print_pip_list()
import subprocess
def print_pip_list():
result = subprocess.run(["pip", "list"], capture_output=True, text=True)
print(result.stdout)
if __name__ == '__main__':
print_pip_list()
成功畫面如下
root@ip-192-168-2-196:/mnt/python/mytest# ./run_script.sh
Package Version
------------------ ---------
certifi 2024.8.30
charset-normalizer 3.3.2
idna 3.8
pip 22.3.1
requests 2.32.3
setuptools 65.5.0
urllib3 2.2.2
通過掌握這些基本操作,你將能夠更有效地管理和運行 Python 專案,提升開發效率並減少潛在的相依性衝突。記住,良好的開發習慣始於環境管理,venv 是你邁向穩定且高效開發的重要一步。
結論
經過上述的練習,相信你將能夠更有效地管理和運行 Python 專案,既可提升多人在同台主機開發的效率,也能減少潛在的套件相依性衝突,如果您正在尋找一種快速、簡單的方法來建立與管理 Python套件庫,那麼 Venv 是一個不錯的選擇。
你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]