【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.mzph.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;