python如何設置虛擬環境|方法有哪幾種

原文連接: python設置虛擬環境- Python學習導航

為什么需要虛擬環境?
在使用Python語言時,通過pip(pip3)來安裝第三方包,但是由于pip的特性,系統中只能安裝每個包的一個版本。但是在實際項目開發中,不同項目可能需要第三方包的不同版本,迫使我們需要根據實際需求不斷進行更新或卸載相應的包,而如果我們直接使用本地的Python環境,會導致整體的開發環境相當混亂而不易管理,這時候我們就需要開辟一個獨立干凈的空間進行開發和部署,虛擬環境就孕育而生。

以下是一些主要的原因:

  1. 隔離項目依賴: 不同的項目可能需要不同版本的依賴庫。虛擬環境允許您在每個項目中創建一個獨立的Python環境,以確保項目所需的特定依賴關系不會干擾其他項目。

  2. 版本兼容性: 有些項目可能對特定版本的庫有依賴,而另一些項目可能需要不同版本。虛擬環境允許您為每個項目指定特定的依賴版本,確保版本兼容性。

  3. 避免全局污染: 在全局Python環境中安裝依賴可能會導致全局污染,使得各個項目之間的依賴沖突。通過使用虛擬環境,每個項目都有自己的隔離空間,不會影響系統的全局Python環境。

  4. 便于遷移和分享: 虛擬環境的存在使得項目更容易分享給他人或在不同系統上遷移。通過將虛擬環境信息包含在項目中,其他人可以輕松地在其環境中重建相同的開發環境。

  5. 簡化部署: 在生產環境中使用虛擬環境可以確保部署是一致的,并且不受系統全局環境中其他應用程序的影響。這有助于避免潛在的兼容性問題。

總體來說,虛擬環境使得項目的開發和維護更加清晰、可維護,并有助于解決依賴關系管理的挑戰。在大型或復雜的項目中,使用虛擬環境是一種良好的實踐。

Python中創建虛擬環境的方法有多種,以下是一些常見的方式:

  1. 使用 venv 模塊(Python 3.3及以上版本):

    # 在項目目錄中創建虛擬環境 python3 -m venv venv # 激活虛擬環境(Windows) venv\Scripts\activate # 激活虛擬環境(Linux/Mac) source venv/bin/activate

  2. 使用 virtualenv 模塊:

    # 安裝 virtualenv 工具 pip install virtualenv # 在項目目錄中創建虛擬環境 virtualenv venv # 激活虛擬環境(Windows) venv\Scripts\activate # 激活虛擬環境(Linux/Mac) source venv/bin/activate

  3. 使用 Pipenv:

    # 安裝 Pipenv pip install pipenv # 在項目目錄中創建虛擬環境并安裝依賴 pipenv install # 進入虛擬環境 shell pipenv shell

  4. 使用 conda:

    如果您使用的是 Anaconda 或 Miniconda,可以使用 conda 創建虛擬環境。

    # 創建一個名為myenv的虛擬環境 conda create --name myenv # 激活虛擬環境 conda activate myenv

  5. 使用 pyenv:

    pyenv 是一個Python版本管理工具,也可以用于創建虛擬環境。

    # 安裝 pyenv-virtualenv 插件 git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv # 創建并激活虛擬環境 pyenv virtualenv 3.8.5 myenv pyenv activate myenv

  6. 使用poetry:

? ?? ?如果您需要精確的版本控制和獨立的虛擬環境,Poetry 是一個不錯的選擇

這些方法中,選擇哪一種取決于您的項目需求和個人偏好。一般來說,推薦使用 venv(對于Python 3.3及以上版本)或者 Pipenv,因為它們提供了更簡單的使用和更多的功能。如果您使用的是 Anaconda 或 Miniconda,conda 也是一個強大的選擇。

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

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

相關文章

c++之旅——第三彈

大家好啊,這里是c之旅第三彈,跟隨我的步伐來開始這一篇的學習吧! 如果有知識性錯誤,歡迎各位指正!!一起加油!! 創作不易,希望大家多多支持哦! 一.命名空間;…

項目設計:基于Qt和百度AI的車牌識別系統(嵌入式ARM)

基于Qt和百度AI智能云實現的智能車牌識別系統,具體可實現為停車場管理系統、智能計費停車系統…等。 1.系統實現思路及框架 1.1實現思路 要實現一個車牌識別系統,有多種方法,例如用opencv圖像算法實現,或用第三方算法接口&#x…

輸出梯形 C語言

解析:這個輸出圖形的題就是一個找規律加數學計算,我們發現每行比上一行多兩個*,最后一行的*表達式為h(h-1)*2,即3*h-2,那么每一行就是一個先輸出最后一行-當前行*個數個空格&#xf…

pytorch 圖像數據集管理

目錄 1.數據集的管理說明 2.數據集Dataset類說明 3.圖像分類常用的類 ImageFolder 1.數據集的管理說明 pytorch使用Dataset來管理訓練和測試數據集,前文說過 torchvision.datasets.MNIST 這些 torchvision.datasets里面的數據集都是繼承Dataset而來&#xff0c…

【Qt】QTextEdit/QPlainTextEdit 實現 Tab 鍵多行縮進與反縮進

【Qt】QTextEdit/QPlainTextEdit 實現 Tab 鍵多行縮進與反縮進 文章目錄 I - 主要原理II - 代碼實現2.1 - 自定義類2.2 - 實現 Tab 縮進2.3 - 實現反縮進III - 參考鏈接I - 主要原理 由于 QTextEdit 和 QPlainTextEdit ,都無法實現多行選中縮進與反縮進,選中多行后,按下縮進…

[Redis]——Redis命令手冊set、list、sortedset

🌳List類型常見命令 LPUSH / RPUSH [KEY] [element] …… 向列表左側或者右側插入一個或多個元素 LPOP / RPOP [key] 刪除左邊或者右邊第一個元素 LRANGE [key] start end 返回索引start到end的元素(索引從0開始) BLPOP / BRPOP [key] [等…

【C++】類的默認成員函數(上)

🔥博客主頁: 小羊失眠啦. 🎥系列專欄:《C語言》 《數據結構》 《C》 《Linux》 《Cpolar》 ??感謝大家點贊👍收藏?評論?? 文章目錄 一、默認成員函數二、構造函數構造函數的概念及特性 三、析構函數析構函數的特性…

續簡單學生管理系統、包裝類--day18

Day18 一、刪除的思考題 思考題:刪除功能可以省略第一步嗎?不可以 有第一步判斷學生信息合法性,如果信息不合法會直接結束返回 如果沒有第一步,將會在第二步判斷是否有該學生query循環匹配查找,數據量大情況&#xff…

藍橋杯倒計時 43天 - 前綴和,單調棧

最大數組和 算法思路&#xff1a;利用前綴和化簡 for 循環將 n^2 簡化成 nn&#xff0c;以空間換時間。枚舉每個 m&#xff0c;m是刪除最小兩個數&#xff0c;那k-m就是刪除最大數&#xff0c;m<k&#xff0c;求和最大的值。暴力就是枚舉 m-O(n)&#xff0c;計算前 n-(k-m)的…

PCSA時鐘控制集成之時鐘門控級別

這一部分描述了&#xff1a; ? 時鐘門控的級別。 ? 實現最大效果的時鐘門位置。 ? 實現有效和高效時鐘門控的集成方法。 時鐘樹是由時鐘緩沖器構建的&#xff0c;這些緩沖器在時鐘源&#xff08;時鐘輸入或PLL&#xff09;與時鐘終端&#xff08;寄存器或RAM&#xff09…

ULN2003(COM的作用)

單路內部電路原理圖 三極管多級放大電路&#xff0c;最大可達到500ma&#xff1b; 典型應用&#xff1a; ULN2003屬于灌電流驅動方式&#xff1b;輸入與輸出電平反向&#xff0c;下拉4K電阻&#xff0c;為解決單片機上電IO瞬間不穩定&#xff1b; COM端 1.可懸空&#xff1a…

Java面題總結7

spring事務什么時候會失效 1:發生自調用&#xff0c;類里面使用this調用本類的方法&#xff08;&#xff09;此時這個this對象不是代理類&#xff0c;而是UserService對象本身 2&#xff1a;方法不是public 3&#xff1a;數據庫不支持事務 4&#xff1a;沒有被spring管理 …

git標簽操作

一.標簽管理 1.理解標簽 標簽 tag &#xff0c;可以簡單的理解為是對某次 commit 的?個標識&#xff0c;相當于起了?個別名,當我們需要回退到某個重要版本時&#xff0c;直接使?標簽就能很快定位到 2.創建標簽 ?先&#xff0c;切換到需要打標簽的分?上,然后&#xf…

經典目標檢測網絡Yolo——原理部分

目標檢測問題 分為兩個子問題: 找到圖片中哪些位置、哪些區域含有目標對象識別這些區域中的目標對象是什么基于CNN的目標檢測算法能夠很好的解決第二個問題,在一張圖片僅含一個對象,且該對象占據了整張圖片絕大部分面積時,基于CNN的對象識別算法具有很高的準確率。 一種定…

操作系統(1)——學習導論(Ⅱ)

目錄 小程一言專欄鏈接: [link](http://t.csdnimg.cn/6grrU) 學習導論&#xff08;Ⅱ&#xff09;操作系統-賞前人佳作大型操作系統大型操作系統的一些特點和功能舉例 服務器操作系統服務器操作系統特點和功能舉例 多處理器操作系統舉例 個人計算機操作系統舉例 掌上計算機操作…

什么是ACID屬性。在MySQL中,如何使用事務?給出一個使用事務的示例,并解釋其工作原理。

解釋什么是ACID屬性 ACID是數據庫事務正確執行的四個基本要素的縮寫&#xff0c;包括原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔離性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;。這四個屬性…

設計模式:什么是設計模式?①

一、什么是設計模式&#xff1f; 1. 是一類程序設計思想 2. 是在大量實踐過程中摸索總結出的標準經驗提煉 3. 具有多樣性和豐富性&#xff0c;不同情況應用的思想不同 二、設計模式的好處 1. 代碼生產力和效率的提升 2. 讓代碼表現更為規整&#xff0c;簡潔。閱讀維護管理的成本…

【競技寶】DOTA2-夢幻聯賽S22:AR命懸一線 XG確定晉級淘汰賽

北京時間2024年2月28日&#xff0c;DOTA2夢幻聯賽S22的比賽在昨日進入小組賽第三個比賽日&#xff0c;本次夢幻聯賽共有AR、XG、IG三支中國區的隊伍參賽&#xff0c;那么經過三日激烈的比賽之后&#xff0c;目前三支隊伍的積分情況以及晉級形勢如何呢&#xff1f; XG XG是小組…

貪心(基礎算法)--- 區間選點

905. 區間選點 思路 &#xff08;貪心&#xff09;O(nlogn) 根據右端點排序 將區間按右端點排序 遍歷區間&#xff0c;如果當前區間左端點不包含在前一個區間中&#xff0c;則選取新區間&#xff0c;所選點個數加1&#xff0c;更新當前區間右端點。如果包含&#xff0c;則跳…

常見的算法

查找算法 基本查找 package MyApi.search;public class a01BasicSearchdemo01 {public static void main(String[] args) { int[] arr{131,127,147,81,103,23,7,79}; int number82;System.out.println(BasicSearch(arr,number));}public static boolean BasicSearch(int[] ar…