conda/pip基本常用命令理解与整理

最近配置了两轮pytorch环境,由于要频繁用到各种conda和pip命令,所以再此整理一下。

文章目录

  • 前言:conda虚拟环境总结与解读
  • Conda和pip的理解
    • 区别和联系
    • 命令格式
  • conda环境命令
    • 查看
    • 创建和删除
    • 导出与导入
    • 激活和退出
  • 包管理命令
    • 安装和删除
    • 文件批量操作
  • 换源相关
    • 镜像源的概念和使用
    • 查看源
    • 在install中临时指定源
    • 通过命令永久换源
    • 通过文件永久换源
    • 代理模式下的SSL证书错误
  • 其他

前言:conda虚拟环境总结与解读

conda虚拟环境总结与解读

Conda和pip的理解

区别和联系

conda和pip都是用来管理包的,但是conda管理的范围大,不仅限于python,且其依赖检查更强大,还可以方便地创建虚拟环境。而pip专精于python,有一些conda没有的包在pip里能找到,而且pip有时候还有一些wheel(已经编译好的包),安装速度更快。

总之,conda和pip都可以用来管理python包,而且他们的包安装路径是一样的,但本身是两个软件,两套配置,两套命令。

建议优先conda,如果conda没有再用pip补充。

命令格式

linux命令格式如下:

command [options] [arguments]

其中option字段有---两种。
- 用于短选项,可以组合使用,适合快速输入;
– 用于长选项,不可组合使用,适合明确表达选项的含义

注:[]方括号只是为了分割,实际输入中并不存在

conda里面也继承了这个特点,如下:

conda -V
conda --version

conda命令由 [主命令] [子命令] [选项1] [参数1]···组成,举个例子:

conda config --add channels [新源]

config就是子命令,–add channels为选项,新源为参数

conda环境命令

查看

显示所有环境:conda env list

创建和删除

创建环境:conda create -n [env] python=[python版本]
删除环境写法1:conda env remove -n [env]
删除环境写法2:conda remove -n [env] --all

注意,remove本来是用来删除包的,但是在显式指定环境命并且加了–all之后,就可以进行环境删除操作了。

导出与导入

导出:conda env export > [file.yaml]
导入:conda env create -f [file.yaml]

注意,导入比直接创建多一个env子命令

激活和退出

激活:conda activate [env]
退出:conda deactivate

包管理命令

安装和删除

conda install [package][==version] [-c] [channel]
pip install [package][==version] [-i] [index-url]

注意,-c和-i是指定临时源,而指定版本的==也可以换成>=,<=,这种写法兼容性更强一些。

conda remove [-n] [env] [package]
pip uninstall [package]
非标准:conda uninstall [package]

注意,pip本身没有虚拟环境功能,所以不需要指定env,而conda要指定。如果conda不指定env,则默认当前环境,也就是我们最常见到的命令。此外,conda uninstall是一种过渡式命令,并不标准。

文件批量操作

导出所有包:pip freeze > [requerement.txt]
安装所有包:pip install -r [requerement.txt]

上述pip操作类似于前面说过的conda环境的导出和导入

导出:conda env export > [file.yaml]
导入:conda env create -f [file.yaml]

二者的区别是conda更好用

  • conda是一整个环境

    • 如果你查看yaml文件,你会发现里面有 包名、源、依赖、本地路径
    • 有人说conda导出环境不包含pip安装包,至少现在并非如此,conda会单独列出来一个pip项,里面的子列表列出pip的内容,并且在conda env create -f操作的时候调用pip命令进行安装
      在这里插入图片描述
  • pip只是所有包的集合,没有环境信息

    • 如果包来自于本地或者conda,就会在后面附带本地路径信息,此时在另一台电脑上安装的时候就会出现问题。在这里插入图片描述

所以前面所谓的“conda导出环境不含pip包”,其实是不准确的,实际上pip和conda导出的包信息都是包含其他来源的。只不过pip比较笨,比较原始,无法识别是本地还是conda来源,所以统一视作来自于本地,只要是在另一台电脑上安装就必然报错,只能用于本地备份(freeze很形象)。而conda因为是为虚拟环境而生,所以更加智能,来源于pip的会标出,并且在conda env create时会调用pip进行安装,甚至还会给你带上镜像源地址,真的是无痛安装。

当然还有一种特殊情况,就是pip,conda,本地安装三者交叉,这样的环境是很难操作的,最好还是整个导出为文件,虽然很大,但是至少不会出错。

换源相关

镜像源的概念和使用

conda install numpy

这个命令的背后,是你的conda先到默认源(https://repo.anaconda.com/pkgs/main/)下进行查找,如果有对应包,就给你下载下来。如果没有,就切换下一顺位的源,以此类推。

所以源是什么呢?是一个代表文件夹路径的URL,而国内访问国外官网很不稳定,所以最好配置国内的镜像源。

需要注意,国内镜像源是有一定延迟的,不一定会有,但实际生产中大部分包都是有的,如果出错更大概率是你不会用镜像源,从网上粘贴了一个源就以为粘对了。目前来说,中科大源已停更,推荐使用清华源,当然还有阿里源,北师大源等可用,接下来展示清华源的使用方法:

最详尽的conda镜像源管理的终极教程——张浩彬

一般我们最常用的就是conda(anaconda)和pip(pypi),你点进去之后就可以看到对应目录,复制好进行添加即可。

查看源

conda config --show channels
pip config list

在install中临时指定源

  • conda用-c,即channel
  • pip用-i,即index-url

注意,conda源有时候不一定是URL形式,比如-c conda-forge;-c pytorch,这些都不是conda默认源,但用的很多,所以就约定俗成为一个标识符,背后还是URL,

通过命令永久换源

conda:

conda config --add channels [channel]
conda config --remove channels [channel]

删除所有非默认:conda config --remove-key channels

pip:

pip config set global.index-url [index-url]
pip config unset global.index-url

需要注意的是,conda是可以用命令单独添加和删除源的,但是pip不可以,global下面只有一个index-url,代表唯一默认源,所以其命令也是set而不是add

pip似乎可以使用add global.extra-index-url 来添加,但是实测下来没有add子命令,所以我认为pip如果要使用多个源还是得修改文件,实在不行就手动-i吧,反正pip用的也少。

通过文件永久换源

我推荐用命令换源,文件涉及到优先级,而且格式也不一定对,所以这篇仅供参考。

源信息储存在配置文件中,默认情况下配置文件是不存在的,因为没必要,直接写在程序代码里就可以。如果你这个时候要添加,可以手动创建,不用担心什么,而当你通过命令添加源后,配置信息就会写入配置文件,此时配置文件也会出现,你可以进行修改。

conda的配置文件在.condarc里,具体有三级,建议在用户级别进行配置:

  1. conda:env_dir/.condarc
  2. 用户:~/.condarc
  3. 系统:略

一个奇怪的现象是,按理说conda优先级高于用户,但是我进行conda配置的时候,写入的是用户级别的condarc,比较诡异。

具体写法是:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - conda-forge
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - https://repo.anaconda.com/pkgs/msys2

pip的配置文件位置看情况,linux叫pip.conf,windows叫pip.ini

在这里插入图片描述
格式为:

在这里插入图片描述

额外源格式为:

[global]
extra-index-url = https://pypi.tuna.tsinghua.edu.cn/simple

代理模式下的SSL证书错误

在实际应用中,我发现开着代理(就算是直连模式),访问https源的时候就会出现链接失败的问题,这篇文章中提到了解决方法:

Python+代理模式下 +解决 pip 安装第三方包时因 SSL 报错Caused by SSLError

最简单的就是配置镜像源+把代理关了,就这么简单(doge)

其他

查看版本(pip同理):

conda -V
conda --version

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/951782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

协方差矩阵

协方差矩阵是一个对称矩阵&#xff0c;用来描述多个随机变量之间的协方差关系。协方差反映了两个随机变量如何共同变化的趋势&#xff0c;协方差矩阵将这种关系扩展到了多维数据。 1. 定义 假设有一个 n 维随机向量 &#xff0c;协方差矩阵 Σ 定义为&#xff1a; 其中&#…

6 分布式限流框架

限流的作用 在API对外互联网开放的情况下&#xff0c;是无法控制调用方的行为的。当遇到请求激增或者黑客攻击的情况下&#xff0c;会导致接口占用大量的服务器资源&#xff0c;使得接口响应效率的降低或者超时&#xff0c;更或者导致服务器宕机。 限流是指对应用服务进行限制…

LINUX 下 NODE 安装与配置

一、官网地址&#xff1a; &#xff08;中文网&#xff09;https://nodejs.cn/ &#xff08;英文网&#xff09;https://nodejs.org/en/ 二、下载安装包 2.1、下载地址&#xff1a;下载 | Node.js 中文网 https://nodejs.cn/download/ 2.2、使用 wget 命令下载到linux 服务器…

Qt重写webrtc的demo peerconnection

整个demo为&#xff1a; 可以选择多个编码方式&#xff1a; cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…

el-tabs中tabs过多造成form表单输入的时候卡顿

这里写自定义目录标题 tabs过多造成的输入卡顿解决方案方案一方案二 出现的并发问题解决方案 tabs过多造成的输入卡顿 描述&#xff1a;前端要写一个需求&#xff0c;大概有一百多个tab渲染过来&#xff0c;每个tab中都是一个表单&#xff0c;这个时候数据渲染任务加重&#x…

【python/html/js 鼠标点选/框选图片内容】

html代码 注意修改图片地址&#xff0c;坐标会保存为coordinates.json <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

Zustand selector 发生 infinate loops的原因以及解决

Zustand selector 发生 infinate loops 做zustand tutorial project的时候&#xff0c;使用选择器方法引入store&#xff0c;出现Maximum update depth exceeded,也就是组件一直重新渲染&#xff0c;改成直接使用store就没有不会出现这个问题。如下&#xff1a; // const [xIs…

AngularJs指令中出错:Error: $compile:nonassign Non-Assignable Expression

Expression {resumeId: item.resumeId} used with directive rwdsDelete is non-assignable! 在AngularJS中&#xff0c;$compile服务用于将指令编译成HTML。当你在模板中使用了一个表达式&#xff0c;但这个表达式不是一个左值&#xff08;即不能被赋值的表达式&#xff09;时…

moviepy 将mp4视频文件提取音频mp3 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

openssl编译

关于windows下&#xff0c;openssl编译 环境准备 安装 perl:https://djvniu.jb51.net/200906/tools/ActivePerl5_64.rar安装nasm&#xff1a;https://www.nasm.us/pub/nasm/releasebuilds/2.13.01/win64/nasm-2.13.01-installer-x64.exe下载opensll源码&#xff1a;https://o…

QT c++ 样式 设置 标签(QLabel)的渐变色美化

上一篇文章中描述了按钮的纯色&#xff0c;本文描述标签的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

学习打怪日记

目录 0 关于1 SpringBoot上传大文件抛出异常&#xff1a;MaxUploadSizeExceededException2 SpringBoot警告&#xff1a;HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl6221f160 (No operations allowed after connection closed.). Possibly …

xss-labs关卡记录15-20关

十五关 随便传一个参数&#xff0c;然后右击查看源码发现&#xff0c;这里有一个陌生的东西&#xff0c;就是ng-include。这里就是&#xff1a; ng-include指令就是文件包涵的意思&#xff0c;用来包涵外部的html文件&#xff0c;如果包涵的内容是地址&#xff0c;需要加引号。…

(五)ROS通信编程——参数服务器

前言 参数服务器在ROS中主要用于实现不同节点之间的数据共享&#xff08;P2P&#xff09;。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据&#xff0c;关…

自动化测试框架搭建-数据库方法连接-初阶

目的 将数据库连接的步骤封装成一个方法&#xff0c;在需要连接数据库时&#xff0c;传入指定的参数&#xff08;SQL&#xff09;即可实现对数据查询和修改 代码实现 1、编写数据库连接方法 2、导入其他方法中使用步骤一 import pymysqldef mysqlConnetion(Sql):# 数据库连…

vivado 时钟指南

时钟指南 每个 FPGA 架构都为时钟提供有专用资源。掌握 FPGA 架构中的时钟资源&#xff0c;使您能够规划好自己的时钟&#xff0c;从而实现时钟 资源的最佳利用。大多数设计无需您了解这些细节。但如果您能够控制布局&#xff0c;同时对每个时钟域上的扇出有良好的思 路&a…

【微信小程序】回到顶部图标-页面滚动事件 | 漫画-综合实训

一、回到顶部-页面滚动事件 在微信小程序中&#xff0c;如果你想将“回到顶部”的功能按钮换成图标&#xff0c;你可以通过以下步骤实现&#xff1a; 1. 准备图标 首先&#xff0c;你需要准备一个图标图片。这个图标可以是任何你选择的格式&#xff0c;如 PNG 或 SVG。将图标…

通过一个含多个包且引用外部jar包的项目实例感受Maven的便利性

目录 1 引言2 手工构建3 基于Maven的构建4 总结 1 引言 最近在阅读一本Java Web的书籍1时&#xff0c;手工实现书上的一个含多个Packages的例子&#xff0c;手工进行编译、运行&#xff0c;最终实现了效果。但感觉到整个构建过程非常繁琐&#xff0c;不仅要手写各个源文件的编…

el-tree拖拽光标错位问题

背景&#xff1a;el-tree实现的分类树增加拖拽功能后&#xff0c;当分类树由于数量较多产生滚动条&#xff0c;如果分类树已滚动&#xff0c;进行拖拽时会造成光标错位的问题: 原因&#xff1a;el-tree拖拽光标定位的高度并未加上滚动的高度解决&#xff1a;将滚动的样式属性放…

【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号“;“报错

本文内容来自YashanDB官网&#xff0c;原文内容请见 https://www.yashandb.com/newsinfo/7863046.html?templateId1718516 现象 mybatis或mybaits-plus的mapper文件sql结尾加分号";" 执行时报错&#xff1a;”YAS-04209 unexpected word;“ 解决办法 将sql结尾…