【python】使用conda管理python項目:conda管理不同項目環境,pip下載最新的包

文章目錄

  • 一. python包管理概述
    • 1. miniforge、Miniconda與Anaconda
    • 2. conda與pip的區別是什么?
    • 3. pip與conda配合使用
  • 二. 使用conda管理不同py環境
    • 1. 創建一個環境
    • 2. 解決沖突
  • 三. 命令合集
    • 1. conda
      • 1.1. 常用
      • 1.2. 環境管理
      • 1.3. 分享環境
      • 1.4. 包管理
    • 2. 依賴沒有在conda源內時,使用pip
    • 3. 使用conda安裝requirement.txt依賴

一. python包管理概述

1. miniforge、Miniconda與Anaconda

Anaconda vs Miniconda


  • Anaconda 和 Miniconda 是一個公司的產品,商用是付費的,個人暫時免費;
  • Anaconda = Miniconda + more packages。
    Miniconda = Python + conda,安裝最小的支持包,如openssl, ncurses…
    Anaconda = Python + conda + meta package 安裝至少不低于400個常見的支持包,如curl, numpy, pandas…

?

Miniconda vs Miniforge


  • miniforge是由社區主導,用GitHub托管,完全免費,使用 (而且只用)conda-forge 作為(默認)下載channel,避開了Anaconda的repository,從而也就避開了商業使用被Anaconda追責的問題。

  • Miniforge是由社區主導,用GitHub托管,完全免費。


?

channel的定義


conda channels (源) 是 packages 存儲的位置,也即是你是從哪個來源下載這個包,對應到conda內部處理則是下載文件的鏈接。因為不同源會有相同名字的包,因此必須指定來源,同時安裝conda的時候也會有一個默認的channel。目前主流的就是 conda-forge,齊全且更新快。如果有多個channel,他們會按順序確定優先級,優先的源上找不到,就會到下一個優先級的源上去找。

還可以設置channel的優先級是否strict,如果是strict的話,則只會在這一個源上查找。

  • Miniforge 使用conda-forge 作為默認 channel
  • Miniconda 使用anaconda.org 作為默認channel。

?

MacOS上的支持


  • Miniforge 比 Anaconda、Miniconda 更早支持了Apple M1芯片。在蘋果官方的Tensorflow加速訓練教程中也是推薦的Miniforge。

  • Miniforge相比Anaconda更為靈活輕便,安裝體積小、運行速度快、支持mamba、支持PyPy等。


?

2. conda與pip的區別是什么?

Conda 和 pip 都是 Python 的包管理工具,但它們有一些區別,主要體現在以下幾個方面:

  1. 包管理范圍:
  • pip:是 Python 的默認包管理器,主要用于安裝和管理 Python 包(也稱為模塊或庫),這些包通常發布在 Python Package Index(PyPI)上。
  • Conda:是一個跨平臺的包管理器和環境管理器,不僅可以管理 Python 包,還可以管理任何語言的軟件包。
  1. 環境管理:
  • pip:雖然可以安裝和管理 Python 包,但本身并沒有直接提供環境管理的功能。通常需要結合 virtualenv 或者 venv 等工具來創建和管理虛擬環境。
  • Conda:除了包管理外,還具有強大的環境管理功能。Conda 可以創建、導出、復制和刪除環境,允許用戶在不同的項目中使用不同版本的軟件包及其依賴項。

?

總結

  • conda的優勢:包之間嚴格的依賴檢查;是一個超越Python的環境管理器,可以創建多個環境,環境之間互相隔離;
  • pip的優勢:絕大多數包優先發布到pip上,安裝方便,群眾基礎好。

?
如果需要多個python環境,最好使用conda,因為它可以做創建多個py虛擬環境,互不影響(不同的項目依賴的python 包版本不一致)。

?

3. pip與conda配合使用

pip不像conda一樣,它不知道環境,我們首先要確保我們用的是本環境的pip,這樣pip install時,包才會創建到本環境中。

用下面命令查看我們此時用的pip為哪個環境:

which -a pip# macos
whereis pip
# pip: /Users/lianggao/miniforge3/envs/pp/bin/pip

當我們自己創建的conda環境里沒有pip,此時進入自己的conda環境也會默認用base環境的pip,這就需要將pip安裝入本環境。(盡量不要使用base的pip在其他環境裝包,這樣也會裝在base環境中,有產生版本沖突的可能。)

?
在conda環境安裝pip使用如下命令:

#(進入環境后)
conda install pip

用conda list查看此時python環境安裝的包。

?

二. 使用conda管理不同py環境

1. 創建一個環境

# 創建環境,
conda create --name myenv python=3.8conda activate myenvpython3 --version## 安裝包命令
conda install numpy pandas matplotlibpython3 -m pip install ...arch -arm64 zsh

2. 解決沖突

The conflict is caused by:paddlepaddle 2.6.1 depends on protobuf>=3.20.2; platform_system != "Windows"paddlepaddle 2.6.0 depends on protobuf>=3.20.2; platform_system != "Windows"
。。。To fix this you could try to:1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflictERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

放寬版本要求

如果你的項目允許,可以嘗試放寬對 protobuf 的版本要求。例如,將 <=3.20.0, >=3.1.0 改為 >=3.1.0。這將讓 pip 更有可能找到一個滿足條件的版本,并解決依賴沖突。

python3 -m  pip install "protobuf>=3.20.2; platform_system != 'Windows'"

?

三. 命令合集

1. conda

1.1. 常用

conda create --name myenv python=3.8
# 激活環境
conda activate ppfast# 推出當前環境
conda deactivate# 查看當前環境所依賴的包
conda list# 激活conda 環境后pip命令就可以使用了。一般這樣使用:
python3 -m pip install xxx# 修改conda的python版本
conda install python=3.10# 查看擁有的環境
conda info --envs

?

1.2. 環境管理


##創建環境
conda create --name your_env_name##創建制定python版本的環境
conda create --name your_env_name python=2.7
conda create --name your_env_name python=3
conda create --name your_env_name python=3.5##創建包含某些包的環境
conda create --name your_env_name numpy scipy##創建指定python版本下包含某些包的環境
conda create --name your_env_name python=3.5 numpy scipy##列舉當前所有環境
conda info --envs
## 列舉當前環境下所有包
conda env list## 進入某個環境
activate your_env_name## 退出當前環境
deactivate ## 復制某個環境
conda create --name new_env_name --clone old_env_name ## 刪除某個環境
conda remove --name your_env_name --all

?

1.3. 分享環境

通過分享你的 environment.yml 文件,別人就可以從該文件中創建與你一模一樣的環境。

## 在當前環境生成一個environment.yml
conda env export > environment.yml## 將該文件放在工作目錄下,可以通過以下命令從該文件創建環境
conda env create -f environment.yml

?

1.4. 包管理


# 列舉當前活躍環境下的所有包
conda list# 列舉一個非當前活躍環境下的所有包
conda list -n your_env_name# 為指定環境安裝某個包
conda install -n env_name package_name

?

2. 依賴沒有在conda源內時,使用pip

如果不能通過conda install來安裝,可以直接用pip直接安裝。

#pip安裝項目依賴
python3 -m pip install -r requirements.txt# 查看當前環境所依賴的包
conda list

?

3. 使用conda安裝requirement.txt依賴

除了使用pip命令來安裝requirement.txt依賴,也可以使用conda命令來安裝

conda install --yes --file requirements.txt

如果conda下載不了,則使用pip下載


while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt

?

將依賴生成文件

# Export to .yml file
conda env export > freeze.yml# To reproduce:
conda env create -f freeze.yml

?
?
?

參考:

https://stackoverflow.com/questions/35802939/install-only-available-packages-using-conda-install-yes-file-requirements-t

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

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

相關文章

《RepViT Revisiting Mobile CNN From ViT Perspective》

期刊&#xff1a;CVPR 年份&#xff1a;2024 代碼&#xff1a;http://https: //github.com/THU-MIG/RepViT 摘要 最近&#xff0c;與輕量級卷積神經網絡(CNN)相比&#xff0c;輕量級視覺Transformer(ViTs)在資源受限的移動設備上表現出了更高的性能和更低的延遲。研究人員已…

無法訪問指向的web服務器(或虛擬主機)的目錄,請檢查網絡設置

微信公眾平臺,進行業務域名、JS接口安全域名、網頁授權域名配置時&#xff0c;遇到的問題中有&#xff1a;無法訪問指向的web服務器&#xff08;或虛擬主機&#xff09;的目錄&#xff0c;請檢查網絡設置&#xff0c;這里簡單記錄一下處理過程。 關于這個問題首先保證下載…

SHELL腳本學習(十四)gawk進階

一、使用變量 gawk支持兩種變量 內建變量自定義變量 1.1 內建變量 1.1.1 字段和記錄分隔符變量 數據字段變量允許使用美元符號 $ 和 位置來引用對應的字段。 $1 對應第一個數據字段&#xff0c;$2對應第二個數據字段&#xff0c;以此類推。 數據字段用字段分隔符劃定。默…

【基于R語言群體遺傳學】-1-哈代溫伯格基因型比例

前言 群體遺傳學是研究生物群體中基因的分布、基因頻率和基因型頻率的維持和變化的學科。它不僅探討遺傳病的發病頻率和遺傳方式&#xff0c;還研究基因頻率和變化的規律&#xff0c;為預防、監測和治療遺傳病提供重要信息。R語言作為一種強大的統計分析工具&#xff0c;在群體…

mybatis實現多表查詢

mybatis高級查詢【掌握】 1、準備工作 【1】包結構 創建java項目&#xff0c;導入jar包和log4j日志配置文件以及連接數據庫的配置文件&#xff1b; 【2】導入SQL腳本 運行資料中的sql腳本&#xff1a;mybatis.sql 【3】創建實體來包&#xff0c;導入資料中的pojo 【4】User…

TypeScript Project References npm 包構建小實踐

npm 包輸出 es/cjs 產物 在開發一個 npm 包時&#xff0c;通常需要同時輸出 ES 模塊和 CommonJS 模塊的產物供不同的構建進行使用。在只使用tsc進行產物編譯的情況下&#xff0c;我們通常可以通過配置兩個獨立的 tsconfig.json 配置文件&#xff0c;并在一個 npm script 中 執…

kubesphere自定義流水線基礎鏡像

背景 需求&#xff1a;在流水線基礎pod中使用python和jinja2模塊來動態渲染部署文件 由于ks提供的基礎鏡像無法滿足以上需求&#xff0c;在ks提供的maven鏡像的基礎上實現 實施 制作鏡像&并推送到private image repo FROM kubesphere/builder-maven:v3.2.0 RUN sed -i…

7.1作業

1.思維導圖 2.在堆區申請兩個長度為32的空間&#xff0c;實現兩個字符串的比較【非庫函數實現】 (1)定義函數&#xff0c;在對區申請空間 兩個申請&#xff0c;主函數需要調用2次 (2)定義函數&#xff0c;實現字符串的輸入 void input(char *p) (3)調用函數實現字符串比較…

BUT000增強字段BAPI結構激活出錯(BUPA_CENTRAL_CI_CHANGE)

導語&#xff1a;BP主數據增強字段&#xff0c;需要使用BAPI&#xff1a;BUPA_CENTRAL_CI_CHANGE進行值寫入&#xff0c;但是在SAP 2023以后的版本&#xff0c;激活會出錯&#xff0c;原因是因為SAP的一個結構同時包含了BUS00_EEW以及BUS00_EEWX兩個結構&#xff0c;導致結構字…

Spring Security 認證流程

Spring Scurity是spring生態下用于認證和授權的框架&#xff0c;具有高度的靈活性和可擴展行&#xff0c;本節主要對Spring Security的認證過程中進行概括性的介紹&#xff0c;主要介紹在該過程中&#xff0c;會涉及到哪些組件以及每個組件所承擔的職責&#xff0c;希望大家可以…

Elasticsearch 配置說明

# ---------------------------------- Cluster ----------------------------------- cluster.name: yh-es # es名稱 # ------------------------------------ Node ------------------------------------ node.name: xibo-es node.master: true node.da…

電腦錄音軟件哪個好?7款錄制音頻工具大盤點,趕快學起來!(2024)

也許你渴望提取你最喜歡的節目的背景音樂&#xff0c;或者你希望錄制自己的聲音制作教程。如果是這樣&#xff0c;你就需要一款優秀的電腦錄音軟件&#xff0c;來幫助你捕捉任何你想要的聲音&#xff0c;而且不會損失音質。目前市場上存在著大量的錄制音頻工具&#xff0c;面對…

鎖相環相位噪聲仿真代碼-匯總

24小時自動發貨 所設計的壓控振蕩器輸入電壓為0.625V時&#xff0c;輸出大致為500Mhz&#xff1b;輸入電壓為1.559時&#xff0c;輸出電壓大致為1Ghz 1.文件夾里面各個文件作用&#xff08;包括參考書PLL PHASE NOISE ANALYSIS、lee的射頻微電子、以及前人留下的matlab文件還有…

ModStart:開源免費的PHP企業網站開發建設管理系統

大家好&#xff01;今天我要給大家介紹一款超級強大的開源工具——ModStart&#xff0c;它基于Laravel框架&#xff0c;是PHP企業網站開發建設的絕佳選擇&#xff01; 為什么選擇ModStart&#xff1f; 模塊化設計&#xff1a;ModStart采用模塊化設計&#xff0c;內置了眾多基…

Ubuntu(通用)—網絡加固—防DNS污染和ARP欺騙

1. 防DNS污染 DNS協議&#xff0c;把域名解析成ip地址&#xff0c;udp&#xff0c;這個過程會暴露訪問的域名&#xff0c; 對這一傳輸過程加密&#xff08;傳輸層用tcp&#xff09;即為DoH(DNS over HTTPS)。 Browser(firefox)加固 由于Cloudflare、Quad8的DoH服務器不能用&…

三維重建基礎【知識點總結】

三維重建基礎【知識點總結】 rasterizationvolumetric ray-marchingSfM&#xff08;Structure from Motion&#xff09;Spherical Harmonics多視圖立體&#xff08;Multiple View Stereo, MVS&#xff09;動畫制作專業術語 rasterization Rasterization&#xff0c;中文通常譯…

雅思詞匯及發音積累 2024.7.1

旅游場景 1.credit card 信用卡 2.driving license/licence 駕照 3.expire /?k?spa??(r)/ 駕照/護照等過期 4.platform 站臺 5.Currency 貨幣 6.Pound 英鎊 7.Deserts /d??z??ts/ 沙漠 8. hilly areas 丘陵地帶 9.wetlands 沼澤地 10.bushlands 灌木叢 11.tropi…

Dns被莫名篡改的問題定位(筆記)

引言&#xff1a;最近發現用戶的多臺機器上出現了Dns被莫名修改的問題&#xff0c;從系統事件上看并未能正常確定到是那個具體軟件所為&#xff0c;現在的需求就是確定和定位哪個軟件具體所為。 解決思路&#xff1a; 首先到IPv4設置頁面對Dns進行設置&#xff1a;通過ProcExp…

缺失d3dx9_43.dll是怎么回事?教你幾種靠譜的解決方法

在日常生活和工作中&#xff0c;電腦已經成為我們不可或缺的工具。然而&#xff0c;在使用電腦的過程中&#xff0c;我們常常會遇到一些問題&#xff0c;其中之一就是軟件運行時提示d3dx9_43.dll丟失。這個問題會導致軟件游戲無法啟動運行&#xff0c;但只要我們了解其原因和解…

LinkedHashMap、TreeMap

LinkedHashMap&#xff1a; 有序、不重復、無索引&#xff0c;底層是雙鏈表 TreeMap&#xff1a;底層基于紅黑樹&#xff0c;可以對鍵進行排序 默認排序&#xff1a;integer和string都是從小到大排序 例題&#xff1a;