文章摘要
GPT 4
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

闲聊
由于学业压力(不仅要拿学分还得打比赛),好久没更新,好不容易到暑假又有其他比赛要打(属于是学牲了),但想着也拖更了4个月了,今天浅浅更一下~
顺便问一下,单片机的还有人想看吗,今年打了一下蓝桥杯,也算有点心得吧

最近在写python项目是python3.12的,但我本身在搞ROS1(远古版本kinetic)机器本身是Ubuntu 16.04lts的,自带的软件仓库最高只支持到3.5,不同的python版本和包装载一起容易打架,于是学了一下python的包管理软件conda(也可也尝试其他更轻量级的,例如venv、pyenv)

前置知识

Conda是什么

Conda是与编程语言无关的包管理工具,具有严格依赖检查,可以解决复杂的依赖问题
在安装了Conda的设备上,全局有且只能有唯一一个Conda包管理工具,在Windows上你可以尝试开启多个Conda虚拟环境然后执行

1
where conda

然后可以发现不同的虚拟环境指向的Conda都是同一个路径

Pip是什么

Pip是仅限于安装Python包的包管理工具,且对于依赖的检查并不严格,这就有可能会造成我们运行项目时一些奇奇怪怪的Bug,所以我们需要使用Conda等包管理工具进行管理
在Conda中,不同的虚拟环境都有不同的Pip包管理,优先使用局部Pip对项目的包进行管理
在Windows上你可以尝试开启多个Conda虚拟环境然后执行

1
where pip

然后可以发现不同的虚拟环境指向的Pip的路径不同
在Base环境下运行该命令会发现只找到了一个pip,但是再其他自己创建的虚拟环境中会发现有两个pip,一个是虚拟环境的局部pip,另一个就是指向了Base环境的全局pip了,在其他虚拟环境中执行的pip是局部的pip

此外,可以开始尝试使用Conda安装python的包,Conda安装的包是完全独立的,并且会强制检查版本依赖,可以解决大多数依赖问题,且卸载无用包的时候可以检查项目中有无其他包依赖该包的依赖,若无依赖可以连带该包的依赖一同卸载,而使用pip卸载依赖时候需要指定包进行卸载,不能卸载依赖包,会给项目带来许多冗余

当然Conda也是有许多缺点的,例如往往会占据更大的存储空间,且包更新速度较pip更慢

总结:搭建项目环境时使用Conda为主,Pip为辅

环境参考

我这里以Windows为例,我主要使用VS Code作为我的python项目开发编辑器(注意:VS Code并不是IDE,本质上是一个文本编辑器),常用的终端软件是Windows Terminal(微软的终端)
安装Conda之前最好将你原本的Python卸载掉,注意要完整卸载,而且注意环境变量

选择版本

Conda有Anaconda和Miniconda两个版本,Anaconda在深度学习领域运用较多,所以自带Pytorch等包,如果你不需要Pytorch就选择Miniconda(后期有需要也可也在Miniconda再装Pytorch),如果你不知道什么是Pytorch,那就选择Miniconda

安装 Anaconda 或 Miniconda

  1. 下载:首先,你需要从 Anaconda 官网下载 Anaconda 或 Miniconda 官网下载 Miniconda 的适用于 Windows 的安装程序。如果你的网络环境受限,可以考虑使用镜像源anaconda | 清华大学开源软件镜像站
  2. 安装:下载完成后,双击安装程序并按照提示进行安装。
    1. 仅为我安装/为所有用户安装:这个大家看着选吧,不过由于Windows糟糕的多用户体验,该不会真的有人为Windows设置多用户吧(bushi
    2. 安装位置我习惯是默认(我不太喜欢把程序放在不同盘的各个角落,更喜欢放在Windows默认的存储位置,这样也方便清理)
    3. 高级选项1:Create start menu shortcuts(将快捷方式添加到开始菜单):这个影响不大,根据自己的喜好
    4. 高级选项2:Add Anoconda/Miniconda to the system enviroment vraiable(将Anoconda/Miniconda添加至系统环境变量):如果勾选这个选项后,启动默认的Powershell的时候也会启动Conda的虚拟环境,有可能会造成PowerShell启动速度减慢,所以我没勾选,如果不勾选的并且需要在Windows终端中使用Conda可以看后续补充部分
      1
      2
      C:\Users\akimio>conda
      'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    5. 高级选项3:Register Miniforge3 as my default Python 3.12:勾选这个以后在终端输入python会找到conda的python进行启动(类型于将python注册到环境变量),如果你未勾选该选项,且之前卸载掉python,打开终端键入python会直接告诉你python未安装,然后跳转到Mircosoft Store的Python安装页面,如果有多版本Python的使用需求,则不建议安装,这样可以保默认环境的整洁

我的的话是Add Anoconda/Miniconda to the system enviroment vraiableRegister Miniforge3 as my default Python 3.12都未勾选

使用Conda

如果你和我一样的配置,直接打开PowerShell后无论是Conda还是Python应该都无法运行(如果可以运行说明勾选的内容和我的不一样),无论高级选项是否相同都可以接着往下看

使用 Anaconda Prompt

Anaconda Prompt 是一个专门用于 Anaconda 或 Miniconda 的命令行工具,它预先配置了 conda 环境。

如果你勾选了Create start menu shortcuts,应该可以在开始菜单下找到Anaconda Powershell Prompt (miniconda3)Anaconda Prompt (miniconda3)(如果没有可以手动配置一下),其本质上是一个快捷方式,就是在启动PowerShell时激活Conda

1
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\ProgramData\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate 'C:\ProgramData\miniconda3' "

如果你没有勾选的话可以把我上面的Conda路径替换成你的安装路径,然后在PowerShell中执行这段命令就会发现前面多了一个(base),这说明已经进入了Conda的虚拟环境,再执行python也成功进入到了Python的命令行界面而不是跳转到Python的下载界面

Conda相关命令

尽量不要在Base环境中配置依赖,每个项目都应该有自己的虚拟环境,甚至是每个分支都可以有自己的虚拟环境
假设当前已经进入Conda环境(前面有(base)

  1. 创建一个新的虚拟环境:

    1
    conda create --n you_venv_name python=3.5

    这样我就创建了一个名为you_venv_name的python3.5的虚拟环境,如果没有指定python版本,创建的python版本是对应于你的Conda版本的
    还可以指定虚拟环境的创建位置,可以创建在你的项目根目录下,这样方便辨别是哪个项目使用的吗,默认是创建在Conda自己配置的一个位置,和之前安装Conda的位置有关,后面可以指定默认的虚拟环境安装位置

  2. 激活环境:

    1
    conda activate you_venv_name

    然后前面的(base)就变成了(you_venv_name),代表以及进入了这个虚拟环境

  3. 安装包:
    在当前激活的环境下安装包,有两种安装方式,具体区别看前面的前置知识

    1
    2
    conda install package_name
    pip install package_name
  4. 退出环境:

    1
    conda deactivate

    然后前面的(you_venv_name)又变成了(base),代表回到了主环境

  5. 查看当前计算机有哪些虚拟环境

    1
    conda env list

    可以看到已安装虚拟环境的名字和位置,前面有*的是当前激活的虚拟环境名字

  6. 删除虚拟环境

    1. 通过命令行删除:
      1
      conda remove -name you_venv_name --all
    2. 直接删除虚拟环境安装位置:
      通过conda env list查看安装位置,直接把文件夹删除即可
      删除完成后再通过conda env list查看当前已安装的虚拟环境发现环境已被删除

补充

一些小技巧,有需要随机更新

VS Code的使用

在VS Code中直接打开Python项目的.py文件,VS Code会问你选用哪个解释器,选择对应解释器就好,VS Code会记住这个选项
VS Code选择项目释义器
VS Code选择项目解释器

Terminal优化

如果你和我一样喜欢使用Windows的终端,并且没有把Conda加入系统环境变量Path的路径,也可以跟着接下来的操作设置

打开设置
打开设置Windwos终端的设置

添加新的配置文件
添加新配置文件

名称任意,我这里填了Conda
启动命令大致如下(其实就是添加到开启菜单的那个快捷方式的启动命令)
位置需要修改成你的安装路径,如果是默认的安装路径可以直接使用我的启动命令(先试试能不能在PowerShell中运行然后启动Conda环境)

1
%windir%\System32\cmd.exe "/K" C:\ProgramData\miniconda3\Scripts\activate.bat C:\ProgramData\miniconda3

图标可以去Conda安装路径的Menu问下找,也可也自己去网上找资源,如果是默认的安装路径可以直接使用我提供的路径C:\ProgramData\miniconda3\Menu\Iconleak-Atrous-Console.ico

配置参数
配置参数

然后打开终端时可以下拉列表就可以看到新添加的Conda,也可以将Conda设置为启动终端的默认配置,这里不再演示

Conda换源

未完待续

修改默认虚拟环境位置

未完待续