什么時候使用Python 虛擬環境(venv)而不用conda

是的!python3.9 -m venv rtdetr_envPython 原生的虛擬環境(venv),而 conda 是另一個流行的虛擬環境管理工具(來自 Anaconda/Miniconda)。下面我會詳細對比兩者的區別,并講解 venv 的基本用法。


1. Python 虛擬環境(venv) vs Conda 虛擬環境

特性Python venvConda
來源Python 自帶(標準庫)Anaconda/Miniconda 提供
適用場景純 Python 項目,依賴較少科學計算、復雜依賴(如 PyTorch)
跨平臺? 支持(Windows/Linux/macOS)? 支持
依賴管理僅限 Python 包(pip可管理 Python 包 + 系統庫(如 CUDA)
環境隔離僅隔離 Python 包隔離 Python + 非 Python 依賴
創建命令python -m venv myenvconda create -n myenv python=3.9
激活方式source myenv/bin/activate(Linux)conda activate myenv
適用 Python 版本需指定 Python 解釋器(如 python3.9可自動安裝指定 Python 版本

2. Python venv 虛擬環境詳解

(1)創建虛擬環境

python3.9 -m venv rtdetr_env  # 創建一個名為 rtdetr_env 的虛擬環境
  • 這會生成一個 rtdetr_env 文件夾,包含獨立的 Python 解釋器和 pip
  • 關鍵目錄結構
    rtdetr_env/├── bin/         # 可執行文件(Linux/macOS)├── Scripts/     # 可執行文件(Windows)├── lib/         # 安裝的 Python 包└── pyvenv.cfg   # 環境配置文件
    

(2)激活虛擬環境

  • Linux/macOS
    source rtdetr_env/bin/activate
    
    • 激活后,終端提示符會顯示 (rtdetr_env),表示當前處于虛擬環境中。
  • Windows
    rtdetr_env\Scripts\activate.bat
    

(3)驗證環境

which python   # 應指向虛擬環境內的 Python(如 ~/rtdetr_env/bin/python)
pip -V         # 應顯示虛擬環境的 pip 路徑

(4)安裝包

pip install torch numpy  # 所有包僅安裝在當前虛擬環境中

(5)退出虛擬環境

deactivate

3. 何時選擇 venv vs Conda?

  • venv 如果
    • 項目僅需 Python 包(如 Web 開發、簡單腳本)。
    • 不想安裝 Anaconda/Miniconda。
    • 需要輕量級環境(venv 更節省空間)。
  • 用 Conda 如果
    • 涉及科學計算(如 PyTorch、TensorFlow)。
    • 需要管理非 Python 依賴(如 CUDA、FFmpeg)。
    • 需快速切換不同 Python 版本。

4. 常見問題

Q1: venv 和 Conda 能混用嗎?

  • ? 不推薦!可能引發路徑沖突。建議一個項目只用一種工具。

Q2: 如何刪除 venv 環境?

  • 直接刪除虛擬環境文件夾即可:
    rm -rf rtdetr_env  # Linux/macOS
    

Q3: 虛擬環境的包會占用全局空間嗎?

  • ? 不會!所有包僅存儲在 rtdetr_env/lib/ 下,與系統完全隔離。

5. 總結

  • venv 是 Python 官方推薦的輕量級虛擬環境工具,適合大多數純 Python 項目。
  • Conda 更適合科學計算場景,能管理更復雜的依賴。
  • 你的操作 python3.9 -m venv rtdetr_env 是完全正確的,接下來只需激活并安裝包即可:
    source rtdetr_env/bin/activate
    pip install torch networkx
    

是的!在 Docker 鏡像環境(無 Conda) 的情況下,使用 Python 原生的 venv 虛擬環境 是最方便、最輕量的選擇,原因如下:


? 為什么推薦 venv(而不是 Conda)?

  1. 無需額外安裝

    • venv 是 Python 自帶的標準庫(無需像 Conda 那樣額外安裝)。
    • 你的 Docker 鏡像已經有 Python 3.8/3.9,直接可用。
  2. 輕量且隔離

    • venv 僅隔離 Python 包,不涉及系統依賴(適合 Docker 環境)。
    • Conda 更適合管理復雜依賴(如 CUDA、MKL),但 Docker 通常已配置好這些。
  3. 避免權限問題

    • Conda 可能需要寫入系統路徑(如 ~/anaconda3),而 Docker 鏡像可能限制權限。
    • venv 的環境完全在用戶目錄下,無權限沖突。
  4. 集群友好

    • 集群環境通常推薦用 venvpip,避免 Conda 的復雜依賴解析。

📌 具體操作步驟

1. 創建虛擬環境

python3.9 -m venv /path/to/your/env  # 推薦放在你的工作目錄下

例如:

python3.9 -m venv ~/rtdetr_env  # 在用戶目錄下創建

2. 激活環境

source ~/rtdetr_env/bin/activate  # Linux/macOS

激活后,終端提示符會顯示 (rtdetr_env),表示已進入虛擬環境。

3. 安裝依賴包

pip install torch==2.1.0 networkx --index-url https://download.pytorch.org/whl/cu121
  • 所有包會安裝在 ~/rtdetr_env/lib/python3.9/site-packages/,與系統隔離。

4. 驗證環境

which python  # 應顯示 ~/rtdetr_env/bin/python
pip list      # 查看已安裝的包

5. 退出環境

deactivate

?? 注意事項

  1. Python 版本問題

    • 如果默認 python3 是 3.8,但你需要 3.9,顯式指定 python3.9 -m venv(如你已做的那樣)。
    • 檢查可用版本:ls /usr/bin/python*
  2. Docker 鏡像的持久化

    • Docker 容器停止后,虛擬環境可能丟失(除非掛載了持久化卷)。
    • 建議將 venv 創建在掛載的目錄(如 /data 或你的 $HOME)。
  3. pip 換源加速
    如果下載慢,可以臨時換源:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch networkx
    

🆚 為什么不推薦 Conda 在這里?

場景Condavenv
是否需要安裝需手動安裝 Anaconda/MinicondaPython 自帶,直接使用
依賴管理范圍Python + 系統庫(如 CUDA)僅 Python 包
權限要求可能需寫入系統路徑完全用戶目錄隔離
適合場景本地開發機或復雜科學計算Docker/集群/輕量級環境

📚 總結

  • 在 Docker 鏡像中,優先使用 venv,因為:
    • 無需額外安裝,直接可用。
    • 輕量、無權限問題,適合集群環境。
  • 你的操作 python3.9 -m venv rtdetr_env 完全正確,后續只需激活并安裝包即可。
  • 如果遇到問題(如空間不足),可以指定虛擬環境路徑到掛載的存儲卷。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80560.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu20.04安裝x11vnc遠程桌面

x11vnc是一個VNC服務器, 安裝后我們可以不依賴外部的顯示設備, 通過網絡遠程登錄ubuntu桌面。 安裝x11vnc sudo apt-get install x11vnc 設置VNC登錄密碼 sudo x11vnc -storepasswd /etc/x11vnc.pwd 設置x11vnc在開機時自動啟動 新建如下文件: sudo vi /lib/systemd/sys…

Maven的概念與初識Maven

目錄 一、Maven的概念 1. 什么是Maven 2. 項目構建:從代碼到部署的標準化流程 2.1 Maven構建生命周期 2.2 傳統構建 vs Maven構建 3. 依賴管理:解決“JAR地獄”的利器 3.1 依賴聲明 3.2 依賴傳遞與沖突解決 4. Maven倉庫:依賴的存儲…

Unity-Shader詳解-其二

前向渲染和延遲渲染 前向渲染和延遲渲染總的來說是我們的兩種主要的渲染方式。 我們在Unity的Project Settings中的Graphic界面能夠找到渲染隊列的設定: 我們也可以在Main Camera這里進行設置: 那這里我們首先介紹一下兩種渲染(Forward R…

C++ 中 std::tuple 使用詳解

C 中 std::tuple 使用詳解 基本概念 std::tuple 是 C11 引入的模板類&#xff0c;用于打包任意數量、任意類型的值在一起。可看作是類型安全的變長結構體。 #include <tuple>std::tuple<int, std::string, double> t(42, "hello", 3.14);創建 tuple 的…

WebRTC基于網頁的視頻會議,手寫WebRTC流程(html)

WebRTC是web real-time communication網頁及時通信的縮寫&#xff0c;通過javascript就可以實現網頁會話&#xff0c;基于瀏覽器開發出來多媒體應用&#xff0c; 以下是手寫的WEBRTC調用本地攝像頭的html代碼&#xff0c;直接用瀏覽器打開&#xff0c;就可以使用 <!DOCTYPE…

MyBatis 官方子項目詳細說明及表格總結

MyBatis 官方子項目詳細說明及表格總結 1. 核心子項目說明 1.1 mybatis-3 GitHub 鏈接&#xff1a;https://github.com/mybatis/mybatis-3功能&#xff1a; MyBatis 核心框架的源碼&#xff0c;提供 SQL 映射、動態 SQL、緩存、事務管理等核心功能。主要功能&#xff1a; 支持…

【虛幻C++筆記】碰撞檢測

目錄 碰撞檢測參數詳情示例用法 碰撞檢測 顯示名稱中文名稱CSphere Trace By Channel按通道進行球體追蹤UKismetSystemLibrary::SphereTraceSingleSphere Trace By Profile按描述文件進行球體追蹤UKismetSystemLibrary::SphereTraceSingleByProfileSphere Trace For Objects針…

推論階梯——AI與思維模型【81】

一、定義 推論階梯思維模型是一種用于分析和理解人們如何從觀察到的事實,經過一系列的假設、推理和判斷,最終得出結論的思維過程的理論框架。它將這個過程比喻為一個階梯,每一步都建立在前一步的基礎上,逐漸形成一個完整的推論。這個模型幫助我們意識到在思考和決策過程中…

小剛說C語言刷題——1109加密四位數

1.題目描述 某軍事單位用 4位整數來傳遞信息&#xff0c;傳遞之前要求先對這個 4 位數進行加密。加密的方式是每一位都先加上 5然后對 10取余數&#xff0c;再將得到的新數顛倒過來。 例如&#xff1a;原數是 1379 &#xff0c;那么每位加 55對 10 取余數的結果為 6824 &…

云服務器和獨立服務器的區別在哪

在當今數字化的時代&#xff0c;服務器成為了支撐各種業務和應用的重要基石。而在服務器的領域中&#xff0c;云服務器和獨立服務器是兩個備受關注的選項。那么&#xff0c;它們到底有何區別呢&#xff1f; 首先&#xff0c;讓我們來聊聊成本。云服務器通常采用按需付費的模式…

【前端】【業務場景】【面試】在前端開發中,如何優化 SVG(可縮放矢量圖形)的性能,特別是在處理復雜圖形和動畫時

SVG?性能優化&#xff1a;循序漸進 4?步法 目標&#xff1a;先減負 → 再復用 → 后加速 → 最后按場景微調 ①?精簡—把包袱先丟掉 刪除無用元素 隱藏/被遮擋的 <path>、未引用的 <defs> 里漸變、濾鏡。 合并路徑 同填充色或描邊的路徑 ? SVGO / SVGOMG「Mer…

MySQL長事務的隱患:深入剖析與解決方案

MySQL長事務的隱患&#xff1a;深入剖析與解決方案 一、什么是長事務&#xff1f; 在數據庫系統中&#xff0c;長事務(Long Transaction)通常指執行時間超過預期或系統設定閾值的事務。對于MySQL而言&#xff0c;雖然沒有嚴格的時間定義&#xff0c;但一般認為執行時間超過數…

華為AR1200 telnet設置

華為路由配置TELNET登 &#x1f4fa; 啟動TELNET服務 在華為路由器上啟動TELNET服務&#xff0c;執行以下命令&#xff1a; telnet server enable &#x1f511; 配置AAA認證 進入AAA認證配置&#xff0c;創建一個路由器登錄帳號admin123&#xff0c;并設置密碼為huawei123&…

【Token系列】01 | Token不是詞:GPT如何切分語言的最小單元

文章目錄 01 | Token不是詞&#xff1a;GPT如何切分語言的最小單元&#xff1f;一、什么是 Token&#xff1f;二、Token 是怎么來的&#xff1f;——BPE算法原理BPE核心步驟&#xff1a; 三、為什么不直接用詞或字符&#xff1f;四、Token切分的實際影響五、中文Token的特殊性六…

如何快速高效學習Python?

如何快速高效學習Python&#xff1f; How to Fastly and Effectively Learn Python Programming? By JacksonML 1. Python年輕嗎&#xff1f; Python自1991年誕生到現在&#xff0c;已經經歷了三十四年或者更長時間了。畢竟&#xff0c;Python之父 – 吉多范羅蘇姆先生(Gu…

NAT穿透

NAT是 Net Address Traslation的縮寫&#xff0c;即網絡地址轉換 NAT部署在網絡出口的位置。位于內網和公網之間&#xff0c;是連接內挖個主機和公網的橋梁&#xff0c;雙向流量都必須經過NAT&#xff0c;裝有NAT軟件的路由器叫NAT路由器&#xff0c;NAT路由器擁有公網Ip NAT解…

搜索引擎的高級語法

文章目錄 精確搜索&#xff1a;雙引號站內搜索&#xff1a;site通配符搜索&#xff1a;*減號縮小范圍&#xff1a;-文檔搜索&#xff1a;filetypeURL搜索&#xff1a; inurl標題搜索&#xff1a;intitle正文搜索&#xff1a;intext參考鏈接 精確搜索&#xff1a;雙引號 “ ” …

RAG vs 微調:大模型知識更新的最優解之爭

一、技術本質&#xff1a;知識注入的兩條路徑 在大模型應用落地的實踐中&#xff0c;RAG&#xff08;檢索增強生成&#xff09;與微調&#xff08;Fine-tuning&#xff09;已成為知識更新的兩大核心技術路徑。二者的本質差異在于是否對模型參數進行修改&#xff1a; 維度RAG微…

解釋器體系結構風格-筆記

解釋器&#xff08;Interpreter&#xff09;是一種軟件設計模式或體系結構風格&#xff0c;主要用于為語言&#xff08;或表達式&#xff09;定義其語法、語義&#xff0c;并通過解釋器來解析和執行語言中的表達式。解釋器體系結構風格廣泛應用于編程語言、腳本語言、規則引擎、…

瀏覽器f12可以搜索接口的入參 和返回內容

瀏覽器f12可以搜索接口的入參 和返回內容