Commit 43bd5836 by Leo

upload code

parent dcee9304
# 电脑常识——开发者相关
# 电脑常识——开发者相关
## 操作系统篇
### windows操作系统和linux操作系统介绍
#### 什么是操作系统
你可以发现,你的手机上的软件、文件和电脑端的不完全通用,不同品牌的手机之间也不通用,例如苹果手机和华为手机,这就是因为手机和电脑使用了不同的操作系统。
常见的操作系统有:windows、安卓、ios、鸿蒙、linux、苹果的mac等。
linux操作系统是和windows不同的另一种开源操作系统,手机的安卓系统、ios、mac
## 概念介绍——操作系统
### 环境配置介绍
- 环境:编程时,代码只是一个文本文件。无论是代码编写过程中,还是代码执行过程中,都需要提供各种工具和资源。例如用色彩将语法高亮、方便的自动提示、语法纠错、将代码转换成程序的工具(编译器/解释器)、其他工具包及其路径与调用方法等。这些编写和执行代码所需的各种工具与资源比较笼统的统称为“环境”。
- 环境配置:配置(1)一个方便自己编写代码的环境(2)一个能让自己的代码跑起来的环境。
### shell:powershell和cmd
- cmd:全称command prompt,在一些电脑上显示的中文名为“命令提示符”。cmd源于早期DOS系统,功能原始简单但稳定可靠。
- powershell:推出于2006年,是cmd的升级版本(只要是cmd上能运行的指令powershell上都能运行),powershell功能更强,但由于更复杂所以也更容易报错。
- shell:cmd与powershell都是windows系统自带的shell。
- 不同操作系统拥有不同的shell,例如Bash是Linux中最常见的Shell。
- 由于兼容性和用户习惯等原因,windows在推出powershell之后并没有弃用cmd,因此windows操作系统目前同时存在两种shell。
- shell的别称:终端、prompt、命令行工具,这几个称呼是同义词。
- 在只涉及到基本功能时,powershell和cmd两者可以互换使用,区别不大。
小技巧:点击组合键win+r,输入cmd或powershell即可打开对应shell。
### 环境变量
#### 简介
- 环境变量可以看作在终端中启动其他程序的快捷方式,类似桌面上的快捷方式。
- 环境变量指定的如果是一个文件夹的目录,则表示将该文件夹内的所有可执行的文件加入环境变量。
- 将一个路径添加入环境变量,则使用powershell或cmd执行该路径内的程序时便不需要再指定路径,只需要输入文件名即可。
- shell在获得一个指令时会在所有环境变量的目录中搜索匹配,执行第一个搜索到的匹配项。(也就是即使存在多个匹配项也只会执行第一个匹配项)
- 注意环境变量与接下来要提到的环境配置、虚拟环境等概念不同,注意区分。
### 文件名后缀与文件类型介绍
#### 文件名后缀机制简介
- 操作系统的文件命名一般都带有后缀并根据后缀名来识别文件类型。这个机制目前所有设备的操作系统通用。
- 后缀的识别方式是由文件名的最后一个点“.”识别。比如.exe执行程序,.txt纯文本,jpg和png格式的图片,.mp3音频,.html网页。
- 早期的文件名后缀只支持三个字符,而现在可以支持更多字符,因此现在存在不同后缀名具有相同意义的情况:如`.hml``.html``.yml``.yaml`都是同类型的文件。
- 文件类型有时存在兼容情况,你可以尝试将一个.txt文件重命名为.html文件然后打开看看会发生什么事。
#### (可选)设置显示文件的后缀名
- windows操作系统一般默认隐藏文件名后缀,因此需要设置windows显示文件名后缀或直接在vscode中查看和设置文件名后缀。
- 推荐方法:在`windows设置->更新和安全->开发者选项->勾选显示文件扩展名和隐藏文件`这两项,可以顺便勾选最下方`更改执行策略,以允许本地powershell脚本在未签名的情况下运行`项。
- 或在`控制面板->外观和个性化->文件资源管理器/文件夹`选项中也可以寻找到。
#### 常见编程类文件格式
`.txt`是最基本的文本格式,代码和一些表格、文本数据集都可以用txt格式打开,即使它们不以`.txt`结尾。以下格式都可以用`.txt`格式打开:
- `.py`:python的代码文件
- `.ipynb`:jupyter文件,可以以代码块的形式分段执行代码、编辑或展示,适用于教学、做笔记、调试等场景。
- `.md`
markdown文件:很适合作为笔记的文件类型,经常被用作readme文件的格式。学习成本不到10分钟即可入门,强烈推荐在完成环境配置之后在jupyter插件中尝试一下。
- `.CSV`
表格类数据的常用格式,本质上是使用英文逗号“,”和换行符作为间隔符的纯文本文件,结构为行与列的表格,因此具有非常高的兼容性。既可以在excel表格编辑,也可以用txt的格式打开,还可以用pandas库直接读取和处理。
- `.json`
一种源于javascript的用于存储和读取文本信息的语法,由于易于人阅读和编写而受到追捧,目前已经成为C++、python等很多语言都支持的通用格式。
- `.yaml`
"Yet Another Markup Language"(仍是一种标记语言)和"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。
只不过是一种与.json格式功能类似,但语法不同的另一种格式。
`.json``.yaml`目前经常被用于存储各种配置文件和非表格类的文本类数据集,经常可以见到config.jsom或config.yaml等名称的文件(config:设置)。你可以通过以文本格式打开`.json``.yaml`文件查看内容。
上面这些文件格式也都是在深度学习环境中经常遇到的,粗略阅读留下一些印象会为未来的学习减少很多阻力。
# vscode、pycharm与jupyter介绍
# vscode、pycharm与jupyter介绍
## 深度学习的“开发环境”简介
- 我们使用的“开发环境”通常由两个部分组成:代码“编写”环境和代码“运行”环境。
- 我们“运行代码”使用的是“conda的虚拟环境”,“编写代码”使用的则是pycharm或vscode(二选一即可)
- “写代码”和“运行代码”是基本上互不干涉的两件事,只不过pycharm和vscode作为“集成”开发环境,均可以识别和调用conda的虚拟环境(或者python环境)执行代码。
- 如果没有conda,vscode和pycharm依然可以编写代码,但无法执行代码。
- 如果只有conda没有vscode或pycharm,则可以运行已有的代码,但不方便编写(代码作为纯粹的文本,仅用txt文档等工具也是可以编写的...但何必呢?)
## vscode与pycharm
- vscode与pycharm是同类产品,都属于IDE(集成开发环境,集成了一些方便写代码和调试代码的工具)。因此pycharm和vscode二选一即可。
- vscode与pycharm的功能基本相同,使用vscode与使用pycharm的用户共同工作时出现的沟通问题只有入门阶段的一些操作区别问题。
- vscode的特点是免费、轻量级、可高度自定义、多编程语言通用
- pycharm是python专用,只支持python一种语言,有免费版和付费版。
由于pycharm的内置jupyter和远程连接功能是付费功能,而同样的功能在vscode免费,因此本文档更推荐新人使用vscode作为推荐配置,但如果你已经熟悉pycharm也可以继续选择pycharm。
## jupyter
- jupyter是一个适用于代码展示和教学的工具,其基本功能为逐块运行代码和展示输出结果。
- jupyter也适用于书写笔记和分享。
- jupyter和vscode一样需要指定使用哪个conda的虚拟环境运行python代码。
- 为了让conda的虚拟环境能够“配合”jupyter,需要在虚拟环境中额外安装“ipykernel”库,(每个需要使用jupyter的虚拟环境都要安装一次)。
- jupyter既可以单独使用,也可以以插件的形式嵌入到vscode中(推荐后者)
## conda
conda负责运行代码的工作。
由于软件版本更新迭代和开发团队的不同、代码的重复利用等因素,导致不同的实际项目所需要的环境经常会出现“不兼容”的现象,因此基于实践经验找到的最优工作方式就是“每个软件项目都单独定制一个代码运行环境”。conda提供的功能就是“可以同时方便的维护多个不同的python代码的执行环境并使其互不影响”。
- 简单理解就是,运行代码的python解释器也需要安装类似“插件”的各种库增加对应的扩展功能。
- 这些“插件”由于来自不同的开发团队,混用起来容易出现各种逻辑上的冲突。
- 因此每个项目的执行环境都需要独立定制。
声明:这里的“插件”不是术语,是比喻,正式说法是“库”或“包”,但其实都是类似的东西。
## pytorch
pytorch是python的第三方库,也就是上文所说的类似“插件”一样的可以添加到python环境中的工具包,也是深度学习框架的核心软件包。
pytorch分为GPU版和CPU版。
- GPU(电脑显卡,也叫显示适配器)和CPU(中央处理器)都是电脑中负责运算工作的硬件。
- GPU版和CPU版分别调用电脑的GPU或CPU处理人工智能算法模型的各种相关运算任务。
- GPU版运算性能高,运算速度快,但GPU价格昂贵,不是所有电脑都具备使用GPU版pytorch的条件。
- 在实际需要时也可以租用云GPU服务器作为替代方案。
- CPU是电脑的核心硬件,是每台电脑都必须具备的硬件,因此所有计算机都支持CPU版。
关于pytorch的更多介绍会在windows深度学习环境搭建的步骤4中提到。
# 补充内容
# 补充内容
## python shell 与 python IDLE
在python或conda环境变量已经配置好并使用`conda activate xxx`激活了相应虚拟环境的前提下:
- python shell:在powershell中输入`python`运行即可开启python shell,能够按行执行python代码。开启标志:“>>>”符号。
- python IDLE:在powershell中输入`IDLE`运行即可开启python IDLE。这是python自带的极简版的代码编辑工具,小巧但功能简陋,我们安装vscode的就是python IDLE的上位替代。IDLE包含python shell。
- 安装并配置完conda后,使用上述指令进入的是当前激活的环境的python shell或IDLE。(中文名用户需要使用anaconda prompt而不是powershell)
## anaconda prompt 与anaconda powershell prompt
其实就是加载了conda配置的操作系统的shell,与添加了conda的环境变量后的powershell区别不大,不需要纠结是使用anaconda prompt还是powershell。
- anaconda prompt的主要存在意义就是中文名用户可以使用anaconda prompt正常配置环境,而无需配置powershell,虽然稍有不便但能用总比不能用强。
- 目前的视频课教程中使用的shell就是anaconda prompt。
## 使用cmd替代powershell
对我们来说,由于环境配置和维护不涉及到powershell的高级功能,如果powershell的使用过程出现难以解决的问题(罕见,但确实出现过这种情况),使用cmd作为替代也是一种可选的解决方案。
替换方法:
设置中搜索`terminal.integrated.defaultProfile.windows`项并改为`command prompt`
### 实用shell检查指令
```powershell
# 显示当前终端的环境变量
(type env:path) -split ';'
# 查找命令路径
where.exe powershell
where.exe cmd
where.exe python
where.exe conda
# 检查nvidia显卡信息
nvidia-smi
# 检查conda版本(注意V要大写)
conda -V
# 检查(当前激活环境的)python版本
python -V
```
上述指令对于powershell/cmd/anaconda prompt通用(中文名用户只建议在anaconda prompt中执行)
# conda常用指令说明
# conda常用指令说明
## 说明
conda的使用方法主要是在终端shell中输入指令进行。
本节内容列出了最常用的实用指令,主要用于查阅,极不建议背诵。
## 环境管理
创建环境
```powershell
conda create -n 环境名 #创建新的空环境
conda create -n 环境名 python=版本号 numpy scipy matplotlib pandas #创建指定版本的python环境,并安装指定包。
conda create -n 新环境名 --clone 旧环境名 #克隆一个环境,注意本命令执行速度很慢,请耐心等待,推荐手动复制一个环境并重命名
```
**注意:第一个指令创建环境时不包含python,但conda会在安装python包时自动安装python,所以很多人不知道这种情况,导致在conda与pip混用时如果在创建环境后直接使用pip安装包安装到base环境!使用pip前一定要给虚拟环境安装python!**
```powershell
# 列出环境
conda info --envs
# 或者
conda env list
# 激活与退出环境
conda activate 环境名 #激活环境
conda deactivate #退出环境
#删除环境
conda remove --name 环境名 --all
conda env remove -n 环境名
```
## 包管理
本节加入了pip指令以作为对比
列出当前环境中的包
```powershell
conda list
pip list
# 在当前环境安装包
conda install 包名,包名2,包名3 # 英文逗号分隔
pip install 包名 包名2 包名3 # 空格分隔
# 同时安装多个包可以同时处理多个包的冲突,是很推荐的做法。
conda install 包名=版本号
pip install 包名==版本号 # 注意pip需要两个等号
# 清理包缓存
conda clean --all
pip cache purge
# 使用requirements.txt文件安装包
conda install --file requirements.txt
pip install -r requirements.txt
# 讨厌conda每次都要输入y确认的话,可以直接在命令上增加`--yes`修饰,例如
conda install numpy --yes
# 检查环境中存在的冲突
pip check
```
## conda官方中文文档
更多命令请参阅:
<https://docs.conda.org.cn/projects/conda/en/stable/commands/index.html>
# 操作系统调整
# 操作系统调整
## 中文用户名BUG
英文名用户可以跳过本节。
已知bug:
windows操作系统中conda+powershell+中文用户名的组合会由于中文字符问题导致conda无法正常使用。
这个组合是接下来环境配置需要用到的,为了避免出现不必要的麻烦,中文名用户需要在开始环境配置之前对该问题进行处理。
解决方法:
- 方案一:新建英文名的管理员账户安装和配置环境
- 特点:可彻底解决该问题,但操作繁琐。适合熟悉电脑的用户操作。
- 大致步骤:`找到账户设置->添加英文名新账户->给予管理员权限->重启登录新账户->(可选)备份文件并删除旧账户`,需要备份的是`C:\Users\旧用户名`文件夹。方法步骤不唯一。
- 更具体的操作步骤
- 左下角开始->设置->账户->家庭和其他账户->无视家庭成员、点击下方将其他人添加到这台电脑->输入英文用户名(可以不输入密码)->点击下一步直到完成创建->更改账户类型为管理员->注销或重启以登录新账户
- 在了解操作后果的前提下可以备份并删除旧帐户(可选操作,谨慎操作,不了解操作后果不建议进行删除操作,后果包括但不限于部分软件需在新账户重装、重新登录、重新设置、个人文件夹中保存的数据文档丢失等)。
- 使用控制面板或win+R打开运行->输入`netplwiz`进行设置也是可选方案
- (方案二经过测试,依然会出现其他非常麻烦的bug,文案暂时保留,但不推荐使用。)
- ~~方案二:使用anaconda prompt(cmd)作为默认shell~~
- ~~特点:操作简单保守,无其他副作用,但不排除使用其他软件时再次遇到中文bug,但日常使用时可能更不方便,推荐电脑个人数据较多或电脑小白选择方案二进行操作。~~
- ~~基本思路:不再配置powershell,改为使用`conda prompt`或cmd作为替代,并修改虚拟环境的保存路径为英文。~~
- ~~具体操作步骤~~
- ~~conda安装完成后立刻打开`anaconda prompt`并输入指令`conda config --add envs_dirs C:\my_conda_env`将创建虚拟环境的路径改为英文路径,这里的C盘路径可以自行修改为自己容量最大的盘。~~
- ~~后续所有遇到`powershell`字样的操作步骤全部改为使用`anaconda prompt`进行操作,并省掉`conda init`步骤。(中文路径不要使用conda init指令,会造成更多问题!)~~
- ~~补充:vscode安装成功后的后续优化操作~~
- ~~使用cmd作为vscode默认shell终端的方法:ctrl+,或点击左下角打开设置->搜索`terminal.integrated.defaultProfile.windows`->选择command prompt。~~
- ~~该方案理论上可以避免在使用vscode时频繁打开独立的`anaconda prompt`窗口~~
- 不建议直接修改用户名或其他方案,会造成更多的隐患和bug导致系统不稳定。
## 设置windows开发者选项
以下设置为推荐设置,会减少未来环境配置和代码学习时遇到问题的频率,特别推荐修改powershell安全策略和文件扩展名的设置。
1.`win`键、或开始菜单、或桌面空白处右键显示设置->左上角跳转到设置主页、或搜索栏搜索“设置”,总之找到设置选项。
2. 在windows设置页面搜索“开发者”、或点击`更新与安全->开发者选项`跳转到开发者选项。
3. 推荐勾选以下修改项
- 文件资源管理器
- 更改设置以显示文件扩展名——勾选
- 更改设置以显示隐藏文件和系统文件——勾选
- 更改设置以在标题栏中显示完整路径——勾选
- 远程桌面
- 按需修改
- powershell
- 更改执行策略,以允许本地powershell脚本在未签名的情况下运行。——勾选
- 如果不修改本项,则会在使用powershell环境执行conda指令时遇到麻烦。虽然可以使用`conda prompt`作为替代,但使用`powershell`更为灵活、便利和一劳永逸。
### 修改powershell安全策略的另一种方法
- 组合键`win+r`->输入`powershell`->使用`ctrl+shift+enter`以管理员权限打开->复制并执行指令:
```powershell
set-executionpolicy remotesigned
# 回车后输入A选择全是,并再次回车
```
# python环境配置基础
# python环境配置基础
## 什么是python
- “python”包含python语法,python解释器两种含义。
- python解释器也叫python内核,用于执行python代码。当我们提到“下载python”时,指代的就是python解释器。
- 当我们提到“编写python代码”或“学习python”时则是指代python语法。
### python的库
- 简介
- 库是一种为python提供更多功能的扩展组件,参考下方举例内容。
- Python的库分为内置库(python自带)与第三方库(需要下载)两种。
- 常见第三方库举例:
- torch(人工智能深度学习框架)
- numpy(高性能科学计算)
- pandas(数据预处理与数据清洗)
- matplotlib(科研、数据分析时常用的绘图库)
- seaborn(基于matplotlib的升级版数据可视化库)
- scikit-learn(机器学习算法库)
- 使用方法:使用import语句导入库,一般都写在.py文件的开头。
- 第三方库来源:任何人都可以编写和上传到pypi以供他人使用pip下载源下载。
- 下载方法:使用pip或conda,见下文。
- 一些相关的口语表达的说明:
- 库,包与模块的概念由于经常使用并且在不同场景、不同编程语言和框架具有不同意义,并且经常互相嵌套,因此这几个概念经常被混淆。例如“导包”、“导入库”、“导入模块”的意思常常不做区分,都理解为import操作即可。
- 其中,python官方文档中使用的是“包(pkg)”的概念,只要一个文件夹中具有__init__.py(注意这是一个文件名而不是一行代码)文件,这个文件夹就被python认为是一个包,可以使用import语句导入。
## 背景知识:环境冲突
- 由于第三方库的编写人员团队不同(命名相互冲突)、库的版本更新、第三方库编写时可能还会依赖另一些第三方库(存在依赖关系)、BUG的常见性等各种复杂原因,在python中安装过多库易导致不同的库之间产生冲突,最终会导致代码无法正常运行,并且难以解决。这种情况被称为环境冲突。
- 越是大型、复杂、时间跨度久的项目的环境版本越是容易出现环境冲突,越是要严格按照项目说明的要求仔细配置环境,特别是版本随便换,不能图方便。
## conda虚拟环境介绍
- conda可以方便的创建、检查、隔离多个python解释器来避免环境冲突。
- 这些被conda维护的多个python解释器也叫做“虚拟环境”,在vscode中也被称为“python内核”。
- 使用conda创建“虚拟环境”的最主要便利之处有两点
- 某个环境出问题时,不影响其他环境
- 某个环境出问题时,方便删掉。
## conda、pip与python功能与关系介绍
- conda的功能主要有两大块,一个是虚拟环境管理,一个是包管理。
- pip的功能主要是包管理
- conda的虚拟环境管理功能可以创建、管理、删除python虚拟环境。具体点就是每个虚拟环境中都包含一个python解释器,可以独立运行python代码。conda可以创建、管理和删除这些python解释器。
- 包管理就是对每个虚拟环境中的python第三方库,进行具体配置。
- conda,pip,python的包含关系:conda的每个虚拟环境都包含一个python副本,每个python副本都包含一个pip,即:conda包含python包含pip。
参考资料:
`https://docs.conda.org.cn/projects/conda/en/stable/commands/index.html#conda-vs-pip-vs-virtualenv-commands`
## 下载conda时的版本选择
conda分为anaconda与miniconda两种:
- anaconda内预装了许多用于科学计算和数据处理的常用库。
- miniconda仅包含conda基本功能,需要自己安装所需的库。
基于实际情况,人工智能的第三方库需求与anaconda的预装库并不契合,因此推荐使用miniconda。
## 安装conda需要下载python么
- 不建议conda和独立的python同时安装,避免conda自带的python和独立的python的环境变量出现冲突。
- 如已同时安装单独的python和conda,需要删去独立python的环境变量或将其顺序调整到底部从而避免conda的使用出现问题。
# conda 安装与配置
# conda 安装与配置
## 下载
基于网络原因,国内用户推荐使用国内镜像源下载,国外用户推荐官网下载。
```txt
国外推荐:
miniconda官网下载地址:
https://www.anaconda.com/download/success#miniconda
附:官网全版本下载列表:
https://repo.anaconda.com/miniconda/
国内推荐:
miniconda清华镜像源下载地址:
https://mirror.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=D
注意:使用清华镜像源下载时留意conda版本,不要下载成2013年的古代版本。
```
## 安装
安装时的注意事项:
- 路径可以不放在C盘,但若你打算手动配置path则要记得安装路径。
- 个人用户推荐选择“just me”安装,“all user”选项会导致后续选项不会出现add path选项。
- add PATH选项默认没有勾选,下图不推荐的原因是可能会与电脑上其他自带的python发生冲突,无视并勾选即可。
- 其他选项随意,附选项页机翻。
![conda安装选项图](img/conda_select.png)
## 设置环境变量(安装时没勾add path的话就要补这一步)
首先打开高级系统设置中的环境变量
- 方法一:桌面->右键此电脑->属性->右侧高级系统设置->最下方环境变量
- 方法二:设置->左上角系统->关于->高级系统设置->环境变量
- 方法三:搜索栏搜索`path``编辑系统环境变量`
以上方法在各版本Windows操作系统上大致通用。
![打开环境变量编辑](img/path_config_1.png)
然后按照下图步骤添加下方的环境变量,推荐加到最上方,特别是要在windows自带的应用商店path和其他python之前(如果有)。
```txt
你的conda安装目录
你的conda安装目录\Library\mingw-w64\bin
你的conda安装目录\Library\usr\bin
你的conda安装目录\Library\bin
你的conda安装目录\Scripts
```
![环境变量配置步骤2](img/path_config_2.png)
![环境变量配置步骤3](img/path_config_3.png)
## 初始化
初次使用conda需要执行以下步骤:
```powershell
conda init
```
关闭并>>>**重启powershell窗口**<<<,行首显示`(base)`即表示已可正常使用conda。
重启powershell窗口时若出现报错:`powershell无法加载文件因为在此系统上禁止运行脚本`说明之前没有按照之前的章节修改powershell的安全策略。
修复方法:输入指令`set-executionpolicy remotesigned`并再次重启powershell窗口。
- 记得重启powershell
>记得重启powershell
## (可选)换源
国内用户由于网络原因需要额外进行镜像源配置以更换下载源,避免出现conda下载包时龟速下载和经常性下载失败。
**注:国外网络环境的用户可以跳过本节。**
依然是win+r -> 输入powershell并打开 -> 逐行输入以下命令完成换源:
>注:
>下方指令输入后不会有任何信息显示,是正常情况
>下方指令输入完成后,可以输入指令`conda config --show channels`进行确认镜像源的配置是否正确
>下方镜像源全部都要输入,而不是选择其中一个输入
>本节使用的国内镜像源为清华大学开源软件镜像站的conda软件仓库部分,关于该镜像源的更多信息可参考下方链接获取。
><https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/>
```powershell
# 推荐设置:下载包时显示所有镜像源
conda config --set show_channel_urls yes
# 以下为conda的清华镜像下载源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
```
注意:
- 清华源的官方文档中对pytorch源的配置方式有误,会导致无法正常下载pytorch,这里已修正,但依然会经常出现指定cuda版本却下载成CPU版本的情况。
- 因此conda换源只推荐用于安装CPU版的torch。
- 使用镜像源安装GPU版torch推荐使用pip,具体方法在torch安装教学中会提到。
相关链接:清华源官网anaconda说明页
```html
https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
```
## (可选)修改虚拟环境和包缓存默认存储位置
C盘空间不足用户推荐修改虚拟环境的默认存储位置。
本节为可选项,请根据自身电脑存储情况选择性配置。
### 修改虚拟环境保存路径
新安装conda的用户使用`conda config --add envs_dirs D:\...(由你指定)`指令即可完成修改。
如果需要将旧环境迁移到新目录:
- 使用`conda config --show envs_dirs`指令显示所有设置的路径
- 使用`conda env list`显示所有环境和环境所在目录
- 根据上述信息,手动将旧路径的虚拟环境文件夹复制到新路径下。
- 少数情况下新建的环境依然在旧路径中,该问题的可能原因之一是conda版本低于24,先尝试更新conda为最新版本。如果更新后未能解决或无法更新conda,则只能手动迁移环境,并尝试使用`conda config --remove envs_dirs C:\...`指令删除其他路径。
注:powershell开启时显示的路径是工作目录路径,不是虚拟环境路径,不要混淆。
指令说明:
```powershell
conda env list # 显示已有的虚拟环境名及路径
# 老用户需要迁移已有的虚拟文件或包缓存可以先执行此指令获得虚拟环境位置,然后直接复制粘贴虚拟环境到新路径,conda会自动搜索和识别。
conda config --show envs_dirs # 显示所有默认虚拟环境保存路径
conda config --add envs_dirs D:\conda_env\envs # 增加一个虚拟环境路径
conda config --remove envs_dirs C:\... # 删除一个虚拟环境路径
conda create -n env_name --clone old_env_name
# 克隆环境,注意克隆指令速度极慢。本指令可作为手动复制虚拟环境的替代方案
# 另外从旧环境克隆到新环境时,新环境的保存位置和新建环境的位置相同,所以记得先执行--add的指令。
```
### 修改包缓存路径
- 包缓存一般没有保存的必要,可以先直接使用`conda clean --all`清理缓存而不必迁移。
- 与虚拟环境路径修改方法类似,只需将上述指令中的`envs_dirs`替换为`pkgs_dirs`即可。
## conda的使用
以上内容为conda的安装与配置内容,conda的日常使用指令和方法可以参考本页文档《conda使用手册》。
- 在进行步骤4之前,需要先根据该文档中的指令创建一个新环境并激活
# 下载与安装
# 下载与安装
在vscode官网寻找download按钮下载安装即可。
vscode的环境变量没有存在感不需要特别注意。
```powershell
# vscode官网:
https://code.visualstudio.com/
```
## 配置vscode
### 安装扩展插件
- 在vscode左侧边缘点击魔方图标,或者直接使用快捷键ctrl+shift+x打开扩展页面。
- 在最上方搜索栏输入Chinese,安装带有Microsoft认证的汉化插件(第一个应该就是)。安装后需要重启vscode生效。
- 输入python,安装python插件。
- 输入jupyter,安装jupyter插件。
- 可选:安装大模型插件,安装其中一个即可:
- Tencent Cloud AI Code Assistant腾讯云 AI 代码助手
- Baidu Comate文心快码
- TONGYI Lingma通义灵码
- ChatGPT GPT-4o
- Github Copilot
- ······
### 推荐优化项:修改使用vscode时python的路径设置
vscode界面左下角管理(设置)->设置页的搜索栏(注意不是最顶上的搜索栏)->搜索`python.terminal.executeInFileDir`->勾上
功能:这样可以让.py文件不在工作目录的根目录时也可以正确使用相对路径。
### 推荐优化项:添加传参提示
搜索`python.analysis.inlayHints.callArgumentNames`->选择`all`
功能:.py文件中的函数调用会显示函数定义时的形参,方便你检查传参有没有传歪。
另外,搜索`inlay Hints`有更多的类似设置,你可以尝试一下。
# 创建一个conda虚拟环境并在其中安装pytorch库
# 创建一个conda虚拟环境并在其中安装pytorch库
- 本章节分为GPU检查、GPU版torch安装、CPU版安装三部分,安装GPU版需阅读前两部分,安装CPU版只需要阅读最后一部分,读者可按需阅读。
- 在安装torch前请先确保已有创建的虚拟环境并且已激活环境。
- 重要提示:如果是使用`conda create -n aaaa`的语句创建新环境,默认不会立刻安装python,conda会在首次使用`conda install`指令安装包时根据依赖关系选择兼容的python版本进行安装。这会导致一个问题:在新建环境后立刻执行`pip`指令时,会由于当前环境的pip尚未安装,以及环境变量的优先级机制,`pip`指令会匹配到上一层环境的`pip`(例如base环境),这将导致`pip install`指令会将库安装到错误的环境中。
- 检查方法:在激活环境后,使用`where.exe python``where.exe pip`查询当前环境变量中的python或pip路径是否在当前环境中。
- 解决方案:使用`pip install`安装库之前,需要先执行`conda install python=3.10`安装python,此处版本号可以按需修改或删除(警告:当最新版python发布时,删除版本号会默认安装最新版python,这会导致出现大量依赖冲突问题)。
- conda创建环境指令:
```powershell
# 在powershell或anaconda prompt中执行环境创建指令
conda create -n aaaa python=3.10
# 遇到提示[y/n]时输入y然后点回车
# 指令执行完毕后激活环境
conad activate aaaa
```
- 补充提示:本节内容是配置一个conda虚拟环境的步骤,如果遇到无法解决的问题或误操作等,可以新建另一个环境重新进行配置尝试。conda的主要功能就是:环境配坏了方便删了重配。
```powershell
# 当环境配置出现问题时:
# 创建并激活新环境
conda create -n bbbb python=3.10
conda activate bbbb
# 删除旧环境
conda remove -n aaaa --all
```
## GPU科普
- 显卡(也叫GPU)一般有核心显卡(核显)、集成显卡(集显,已淘汰)、独立显卡(独显)三大类。显卡的功能是为电脑提供屏幕显示的内容。简而言之,没有显卡,电脑会黑屏。
- 集显与核显:集显与核显都是使用CPU和电脑内存完成计算任务,核显是直接集成到了CPU核心中,集显则在CPU之外,但一般焊接在主板上,这两类显卡都无法从电脑上拆分出去。
- 独显:有独立的计算和存储组件(显存),不需要使用CPU和电脑内存,独立完成计算任务,并且在大部分电脑上可以方便的单独安装或拆卸下来。市场上生产独显的两大厂商分别为NVIDIA和AMD,这两家公司生产的独立显卡分别被称为N卡和A卡,AI训练目前主流使用N卡。
- AI训练一般使用N卡,N卡在用于AI训练时的运行逻辑与作为显卡时的计算策略是不同的,并且不同型号的显卡的硬件结构也有所不同...总之最终导致的结果就是目前在安装GPU版torch时需要先查询自己显卡的cuda版本。
## GPU版torch和CPU版torch的选择
- GPU版torch只支持具有N卡的电脑,安装步骤根据显卡cuda版本和驱动版本的不同,安装步骤可能会相当繁琐。
- CPU版torch支持任何电脑,并且安装步骤方便,但是训练速度慢。
- 不要两种都安装。
- 选择安装CPU版可直接跳到本页最底部的CPU版torch安装步骤部分。
- 选择安装GPU版请继续按顺序阅读。
## 检查N卡GPU是否存在
首先确定自己的电脑有没有独立显卡。右键底部任务栏空白处->打开任务管理器->性能->GPU,检查是否存在NVIDIA开头的独立显卡。
![GPU检查图一](img/GPU_check1.jpg)
![GPU检查图二](img/GPU_check2.jpg)
- 有NVIDIA开头的GPU:有N卡,可以正常安装cuda版pytorch
- 只有其他开头的GPU:无法安装cuda版,请选择安装CPU版
- 技术党参考:知道自己是A卡的用户也可以使用ROCM版pytorch,但是坑多且只支持Linux操作系统,非必要建议也安装CPU版。
## (可选)更新显卡驱动
少数长期不联网的电脑需要手动更新显卡驱动,这里提供更新方法
在英伟达官网下载自动更新驱动的工具
<https://www.nvidia.cn/geforce/drivers/>
下载安装后使用工具更新驱动即可。
## 检查自己的cuda版本
在powershell中输入
```powershell
nvidia-smi
```
### 指令成功执行
查看右上角自己的`CUDA Version`确定自己能安装的最高cuda版本,比如我的是12.2,所以我选择pytorch-cuda版本时不能大于12.2。
![GPU检查图3](img/GPU_check3.jpg)
### 指令执行失败
绝大部分情况是由于电脑没有N卡,如果确定自己的电脑没有N卡,则只能安装CPU版torch
极少数情况下,该指令会被放置在一个随机命名的路径中导致无法在shell中识别
可用通过在C盘全局搜索`nvidia-smi.exe`来进行确认,将搜索到的路径添加到`path`中从而解决该问题。如果这一步操作对读者来说比较有难度,则还是建议安装CPU版torch,不要死磕。
## GPU版torch安装
进入pytorch官网:`https://pytorch.org/`并往下拉,找到以下页面:
![pytorch官网安装指令页面](img/pytorch官网安装页示意图.png)
cuda版本和镜像源的额外说明:
- cuda说明
- 上图中的cuda版本选项推荐在不高于自己的`CUDA Version`版本的基础上尽可能高,在此基础上在上方页面选择安装版本。
- 使用镜像源安装GPU版
- 请将下方示例指令中的`torch==2.5.1`修改为上图中蓝框中或你需要的torch版本,将示例指令末尾的链接中的`cu124`修改为你的cuda版本。其中`cu124`就是`cuda 12.4`的意思。修改原理在上图中已给出说明。
- 示例指令:`pip install torch==2.5.1 torchvision torchaudio --index-url https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://download.pytorch.org/whl/cu124`
- 提示:使用pip前请确保当前环境存在python,具体方法在本文开头已给出。
## CPU版torch安装
要求:
- 已激活虚拟环境。
- 若使用codna安装,需要已正常安装conda并按要求配置好镜像源(如果需要)。
- 若使用pip安装,需要确保当前环境存在pip和python,检查方法:执行`where.exe pip`检查,查看当前激活的pip的路径是否存在并且在第一行。
使用conda安装:
```powershell
# 使用torch的官方源下载:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
# 使用国内镜像源下载(要先进行conda换源操作):
conda install pytorch torchvision torchaudio cpuonly
```
使用pip安装:
```powershell
# 使用pip的默认源下载
pip install torch torchvision torchaudio
# 使用pip临时指定镜像源下载(CPU版就不需要像GPU版那样需要另一个链接指定依赖了)
pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
```
## 检查pytorch安装情况
pytorch安装完成后,>>**重启powershell**<<然后输入下方指令并稍等片刻,返回cuda支持情况以确定pytorch是否安装成功。
```powershell
python -c "import torch;print(torch.cuda.is_available())"
# 安装GPU版pytorch返回应当为True
# 安装CPU版pytorch返回应当为False
```
```powershell
python -c "import torch;print(torch.__version__)"
# 正常情况应当返回torch版本2.x.x,过旧的cuda版本可能会是1.x.x
```
若输出符合预期则pytorch配置完毕。若输出与预期不符则可能为环境配置步骤中的某步出问题,需要进行检查。
## 安装其他第三方库
- 第三方库的安装主要要注意点在于安装时的名称与常用称呼可能不一致,例如`sklearn`在安装时要使用全称`scikit-learn`
- 以下是一些深度学习常用第三方库的安装指令,注意不要安装到base环境中。
```powershell
conda install numpy
conda install pandas
conda install matplotlib
conda install seaborn
conda install scipy
conda install scikit-learn
# 也可以合并为一句
conda install numpy,pandas,matplotlib,seaborn,scipy,scikit-learn
```
# vscode的日常使用
# vscode的日常使用
## 指定工作文件夹
- 方法一:左上角文件->打开文件夹->选择一个文件夹作为你的工作文件夹。
- 方法二:或点击ctrl+shift+E->点击打开文件夹(已打开一个文件夹时不会显示该按钮)。
- 方法三:组合快捷键:先按`ctrl+k`,左下角会显示`(ctrl+k)已按下,正在等待第二个快捷键...`,此时再点击`ctrl+o`,然后选择一个文件夹。
![方法一图片](img/open_dir.jpg)
如遇到弹窗,点击信任即可
## 创建python或jupyter文件
快捷键ctrl+shift+E或左上角打开资源管理器,在此处点击新建文件并命名为a.py即自动被识别为python文件,jupyter文件则为.ipynb后缀。
- 注意:新建文件时,后缀名要手动打字输入
![方法一图片](img/new_file.jpg)
## 设置执行python文件和jupyter文件代码的python解释器(vscode内称为内核)
**注意:在终端使用conda activate 激活环境的操作是用于配置环境而不是使用环境,并不能在vscode中改变.py文件和.ipynb文件的执行环境。**
### .py文件的内核指定
- 组合键ctrl+shift+p->输入“python select interpreter”->选择conda的虚拟环境。
### .ipynb文件的内核指定
- 由于jupyter支持的是多种语言并且python内核无法直接识别.ipynb格式,所以每个jupyter文件都要独立指定python环境并安装ipykernel。
- 打开.ipynb文件->右上角选择内核->conda的虚拟环境。
- python内核在安装不能直接识别.ipynb格式文件,需要先安装对应插件。当运行代码时jupyter会提示需要安装ipykernel。
- 国外用户点击确定即可。
- 国内用户建议换源后手动安装:`conda install ipykernel`
## 在vscode中使用终端shell
- 中文名用户不推荐使用本操作,请使用conda自带的独立的`anaconda prompt`快捷方式(不是`anaconda powershell prompt`
- 在vscode点击左上角`···->终端->新建终端`即可在vscode内部打开一个powershell终端,功能与使用win+r组合键单独打开的powershell页面相同,工作目录会自动修改为当前打开的工作文件夹
- 注意区分:在终端中使用conda激活环境的操作与上述的.py与.ipynb文件的执行内核无关,三者都各需要独立指定是使用哪个python。
# 在linux上安装conda
# 在linux上安装conda
## 前置条件
首先打开linux操作系统的bash shell页面,正常linux开机登录之后就是,桌面端为右键桌面空白处然后选择终端,方法不唯一。
所有的操作都在这个bash shell中完成。
可以在bash shell中使用`arch``getconf LONG_BIT`查看自己的处理器架构。
## conda配置步骤
- 首先在bash shell中使用`arch``getconf LONG_BIT`查看linux端的处理器架构类型。
- 我们需要根据处理器架构信息选择适合自己的安装包。
- 细节提示:注意x86_64为64位,x86为32位,两种x86不要混淆。
- 然后根据上面的信息,复制下方其中一个指令进行下载和安装。
- 链接尾部就是对应的处理器架构类型,请自行检查匹配
- 指令说明:`wget`负责下载,`bash`负责安装。
- 请先执行`wget`那一行,再执行`bash`那一行
- 前面是官方源,往下拉还有清华源,请按需选择。
官方源
```bash
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
```
```bash
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86.sh
bash Miniconda3-latest-Linux-x86.sh
```
```bash
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-s390x.sh
bash Miniconda3-latest-Linux-s390x.sh
```
```bash
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh
```
```bash
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-ppc64le.sh
bash Miniconda3-latest-Linux-ppc64le.sh
```
```bash
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-armv7l.sh
bash Miniconda3-latest-Linux-armv7l.sh
```
清华镜像源
```bash
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
```
```bash
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86.sh
bash Miniconda3-latest-Linux-x86.sh
```
```bash
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-s390x.sh
bash Miniconda3-latest-Linux-s390x.sh
```
```bash
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh
```
```bash
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-ppc64le.sh
bash Miniconda3-latest-Linux-ppc64le.sh
```
```bash
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-armv7l.sh
bash Miniconda3-latest-Linux-armv7l.sh
```
提示:你也可以直接在网页打开这两个链接,手动选择版本号下载。
<https://repo.anaconda.com/miniconda/>
<https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=D>
- `wget``bash`指令执行后,首先会弹出安装协议,长按enter快速跳过,一直到显示"yes or no"选项
- 输入`yes`并回车
- 之后显示是否确认安装
- 按一下enter开始安装
- 之后是显示是否自动激活base环境,自动激活base会在shell的指令输入行前面显示`(base)`,和在windows上的anaconda prompt的效果一样。
- 建议输入yes并确定,这样可以方便判断conda是否正确安装,并且不影响shell的正常使用。
- 之后是显示“为了完成更改,你需要重启shell”。
- 输入`. ~/.bashrc`即可,和重启shell的效果相同,该指令在只能操作shell的服务器类linux系统中非常实用。
- 该指令的说明:这个指令的效果是重新加载bash shell的配置文件
- 该指令的更多说明:开头的点`.``source`的缩写,该指令其实等于`source ~/.bashrc`
- 重新显示的命令输入行前显示`(base)`标记,说明安装成功。
- 之后可以输入`conda -V`再次验证确认是否安装成功,注意这里的V是大写。
![安装成功截图](img/安装成功截图.png)
之后可以正常使用conda的所有指令来配置虚拟环境
## 额外补充内容:离线配置环境
- 对于未连接互联网的linux服务器,需要先在可联网的linux服务器上完成一次配置,然后将conda安装包和配置完毕的虚拟环境传输到未连接互联网的服务器上。
- 传输方法参考远程连接教学,注意你需要对可联网的linux服务器和未联网的linux分别执行`arch``getconf LONG_BIT`检查处理器架构
- 两边的conda都安装完成后,在联网linux服务器上使用`conda env list`寻找到配置完成的虚拟环境文件夹位置,然后在未联网的linux服务器上使用`conda config --show envs_dirs`显示虚拟环境保存路径,将要移动的虚拟环境文件夹挪到这个指令显示的路径的其中一个里。
# pytorch环境配置linux版
# pytorch环境配置linux版
conda安装完成后,我们只需要正常使用conda指令配置linux环境即可。
```bash
conda create -n aaaa
conda activate aaaa
```
## 检查自己的cuda版本
在bash shell中输入
```bash
nvidia-smi
```
### 指令成功执行
查看右上角自己的`CUDA Version`确定自己能安装的最高cuda版本,比如我的是12.2,所以我选择pytorch-cuda版本时不能大于12.2。
![GPU检查图,linux版](img/GPU_check.png)
### 指令执行失败
没有N卡,只能安装CPU版torch
如果你是使用虚拟机运行的linux导致的无法识别GPU,则建议改为使用wsl
## GPU版torch安装
进入pytorch官网:`https://pytorch.org/`并往下拉,找到以下页面:
![pytorch官网安装指令页面](img/pytorch_index.png)
- pytorch安装的cuda版本不能高于自己的`CUDA Version`,在此基础上在上方页面选择安装版本。建议选择conda安装,使用pip可能由于conda的机制造成意料之外的结果。
- “意料之外的结果”的说明:conda在创建环境时默认不会立刻安装python,因此新的环境中不存在pip,使用pip指令时会由于环境变量的优先级机制,匹配到上一层环境的pip,因此使用pip指令在新环境安装时可能会将库安装到错误的环境中。
- 避免此问题的方法:在新环境使用`pip`之前先执行`conda install python=3.xx`安装python,等号后面的`3.xx`是具体的python版本号,可省略,但建议加上。
- 国内用户使用conda安装pytorch时需要在换源后需要删除其中的`-c pytorch`方能正常使用镜像源下载。
- 注意镜像源经常会匹配版本失败导致在指定为cuda版本的前提下依然下载成CPU版。有条件的建议切换成国外网络环境。该问题在windows操作系统上存在,linux操作系统未经过测试。
- 如果自己的cuda版本过低,可以点击上图左下角的`previous versions of PyTorch`按钮查找不高于自己cuda版本的其他版本安装指令。
## CPU版torch安装
要求:
- 已正常安装conda并按要求配置好镜像源(如果需要)。
- 已激活虚拟环境。
```bash
# 已配置镜像源:
conda install pytorch torchvision torchaudio cpuonly
# 使用官方源:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
```
## 检查pytorch安装情况
pytorch安装完成后,输入下方指令并稍等片刻,返回cuda支持情况以确定pytorch是否安装成功。
```bash
python -c "import torch;print(torch.cuda.is_available())"
# 安装GPU版pytorch返回应当为True
# 安装CPU版pytorch返回应当为False
# 这个指令的功能相当于重启了shell
. ~/.bashrc
```
```bash
python -c "import torch;print(torch.__version__)"
# 正常情况应当返回torch版本2.x.x,过旧的cuda版本可能会是1.x.x
```
若输出符合预期则pytorch配置完毕。若输出与预期不符则可能为环境配置步骤中的某步出问题,需要进行检查。
## 安装其他第三方库
- 第三方库的安装主要要注意点在于安装时的名称与常用称呼可能不一致,例如`sklearn`在安装时要使用全程`scikit-learn`
- 以下是一些深度学习常用第三方库的安装指令示例,注意不要安装到base环境中。
```bash
conda install numpy
conda install pandas
conda install matplotlib
conda install seaborn
conda install scipy
conda install scikit-learn
# 也可以合并为一句
conda install numpy,pandas,matplotlib,seaborn,scipy,scikit-learn
```
# WSL2的安装与配置
# WSL2的安装与配置
## 步骤一:操作系统版本检查
首先进行版本检查:
- win11肯定能用
- win10:
win+R输入`winver`查看操作系统内部版本号
>对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
>对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。
请顺便记一下你是x64还是ARM64,后面要用。
## 步骤二:操作系统设置调整
wsl是微软开发的,在windows上已有但需要手动启动的一个功能。微软已经帮你准备好了启用指令。
win+R打开运行,输入powershell,ctrl+shift+enter以管理员权限打开。然后输入以下指令:
```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```
- 第一个指令的含义是启用wsl
- 第二个指令的含义是启用虚拟机平台。
重启电脑然后下一步。
## 步骤三:下载安装WSL2
点击下载x64或ARM64的安装包:
- x64:
<https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi>
- ARM64:
<https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi>
下载完成后安装。
安装完成后,在powershell中输入下方指令,设置wsl创建linux子系统时的默认版本为2
```powershell
wsl --set-default-version 2
```
## 步骤四:安装linux子系统
- 你可以直接使用`wsl --install`安装默认的ubuntu发行版
- 也可以使用`wsl --list --online`来列出所有可选的linux发行版,然后使用`wsl --install -d <linux发行版名称>`来安装,下面是示例
![使用powershell安装linux子系统](img/linux子系统shell安装.png)
注意:
- linux子系统的最大大小约1G,小的只有100M出头。
- 不需要使用梯子,用梯子反而会减速。
- 安装时长大约三分钟以内,安装完成后会提示你创建用户名和密码。某些版本在安装时可能会直接假死,5分钟后没安装成功直接关掉即可,目前测试结构为不影响正常使用,只是登陆时直接就是root用户。
### 附:手动下载安装linux子系统的方法
如果遇到下载问题(例如下载过慢),可用考虑手动下载安装linux子系统。
先下载linux子系统文件,下面是各linux子系统发行版的手动下载链接
>[默认的Ubuntu版本 目前是22.04 LTS 大小1.0G](https://aka.ms/wslubuntu)
>[Ubuntu 24.04 大小667M](https://wslstorestorage.blob.core.windows.net/wslblob/Ubuntu2404-240425.AppxBundle)
>[Ubuntu 22.04 LTS 大小1.0G](https://aka.ms/wslubuntu2204)
>[Ubuntu 20.04 大小895M](https://aka.ms/wslubuntu2004)
>[Ubuntu 20.04 ARM 大小400M](https://aka.ms/wslubuntu2004arm)
>[Ubuntu 18.04 大小221M](https://aka.ms/wsl-ubuntu-1804)
>[Ubuntu 18.04 ARM 大小201M](https://aka.ms/wsl-ubuntu-1804-arm)
>[Ubuntu 16.04 大小199M](https://aka.ms/wsl-ubuntu-1604)
>[Debian GNU/Linux 大小167M](https://aka.ms/wsl-debian-gnulinux)
>[Kali Linux 大小397M](https://aka.ms/wsl-kali-linux-new)
>[SUSE Linux Enterprise Server 12 大小199M](https://aka.ms/wsl-sles-12)
>[SUSE Linux Enterprise Server 15 SP2 大小159M](https://aka.ms/wsl-SUSELinuxEnterpriseServer15SP2)
>[SUSE Linux Enterprise Server 15 SP3 大小194M](https://aka.ms/wsl-SUSELinuxEnterpriseServer15SP3)
>[openSUSE Tumbleweed 大小183M](https://aka.ms/wsl-opensuse-tumbleweed)
>[openSUSE Leap 15.3 大小175M](https://aka.ms/wsl-opensuseleap15-3)
>[openSUSE Leap 15.2 大小141M](https://aka.ms/wsl-opensuseleap15-2)
>[Oracle Linux 8.5 大小109M](https://aka.ms/wsl-oraclelinux-8-5)
>[Oracle Linux 7.9 大小125M](https://aka.ms/wsl-oraclelinux-7-9)
>[Fedora Remix for WSL 大小570M,github](https://github.com/WhitewaterFoundry/WSLFedoraRemix/releases/)
下载完成之后通过浏览器找到下载文件所在文件夹,在文件夹空白处按住shift+鼠标右键,选择“在此处打开powershell窗口”,然后输入以下指令:
```powershell
# 将app_name替换为你下载的appx包名
Add-AppxPackage .\app_name.appx
```
## 检查和启动wsl的linux子系统
列出所有的linux子系统
```powershell
wsl -l -v
```
启动linux子系统
```powershell
# 启动默认的linux子系统
wsl
# 启动某个特定的linux子系统:
wsl -d <linux发行版名称>
# 退出子系统
exit
# 提示:linux子系统安装完成后,不需要在powershell中启动
# 你可以直接通过vscode远程连接linux子系统的方式操作linux
```
>附微软官方中文wsl安装使用参考教程
><https://learn.microsoft.com/zh-cn/windows/wsl/install-manual>
# wsl介绍
# wsl介绍
- 什么是wsl:Windows操作系统的一种可选功能,可以支持运行linux操作系统代码的程序
- wsl的作用:方便在windows操作系统上运行只支持linux操作系统的项目代码,并且支持使用电脑显卡
- wsl的使用方法:使用wsl创建一个linux子系统,然后以远程连接的方式从本地连接到本地...一般使用vscode连接很方便。
- 需要使用linux操作系统(例如跑只兼容linux项目的代码)
- 没有可用的linux服务器
- 拥有一个windows操作系统的电脑
满足以上需求时,推荐学习使用wsl
# vscode远程连接插件的安装与使用
# vscode远程连接插件的安装与使用
无论是哪种连接,都肯定会涉及到本地电脑和“远程”电脑,以下操作在本地电脑
## 安装
打开vscode后,使用快捷键`ctrl+shift+X`或点击左侧侧边栏的长得像魔方的图标打开扩展页(这个侧边栏的中文正式翻译也叫活动栏)
搜索`Remote Development`并安装搜索结果的第一个
安装完成后,左侧侧边栏会增加一个远程资源管理器的按钮如下图
![图:远程连接插件安装示意图](img/远程连接插件安装.jpg)
## 使用
安装完成后,插件页面如下
![图:远程连接插件长啥样的展示](img/远程连接插件使用.png)
## 文件(夹)的上传与下载
上传:拖拽上传即可
![文件上传](img/文件拖拽上传.png)
下载:右键下载即可
![文件下载](img/文件右键下载.png)
之后根据自己的需求选择下一步
# 用wsl“远程连接”本地的linux子系统
# 用wsl“远程连接”本地的linux子系统
用wsl创建一个linux子系统之后,在第一步的基础上选wsl自动显示。
点连接即可。
![多余的示意图](img/wsl连接示意图.png)
## 选了wsl目标后显示的内容为空怎么办
先确定自己的wsl是否配置完毕并且已创建了一个linux子系统。
- 检查方法:快捷键win+r,输入powershell,回车打开powershell,然后执行`wsl -l -v`
没有或者报错的话请移步[wsl环境配置教程](../wsl配置部分/wsl安装与配置.md)
# 远程连接云GPU服务器
# 远程连接云GPU服务器
## 步骤一:在云GPU平台创建一个云GPU服务器实例
首先,你可以在点头的云GPU平台<https://gpu.diantouedu.com/>或其他平台租用云GPU
- 一般的云服务器提供商,包括云GPU服务器,都应该会提供用于远程连接的服务器地址(SSH通道)和连接密钥
- 不同的云服务器会提供不同的操作系统镜像,例如云GPU服务器提供商一般会提供已预装了conda、pytorch等深度学习所需的各种软件工具的操作系统镜像
>不一定准确的科普:众所周知电脑出现严重问题时需要重装系统。在U盘被发明和普及前,早期电脑的操作系统重装方式是使用软盘或光盘,后来U盘出现后,出现了使用U盘重装操作系统的方法。但是因为光盘与USB的读写机制不同,所以出现了一种将光盘中的所有数据打包成一个单独的文件、欺骗计算机“这个文件是一张光盘”的技术,使用U盘代替光盘重装操作系统。这个文件存储的内容和光盘中的内容相同,被称为“光盘镜像文件”,简称镜像文件或镜像,文件后缀名为`.iso`。
你可以根据镜像上的操作系统版本、pytorch版本等信息选择适合自己的镜像,或者只关注操作系统版本,在镜像完成安装后,手动重装配置其他的软件环境。
## 步骤二:获取云GPU服务器的通道(类似网址)
以点头云GPU为例,先点这里即可
![点头云GPU服务器页面展示](img/云GPU服务器页面展示.png)
这里的SSH通道的@左边是linux的用户名,@右边是服务器的地址,前面的IP地址是服务器提供商的地址,后面一般会接一个服务器的端口号(每个租用云服务器的用户会占用一个端口号)
![前钰老师的云GPU的SSH连接的通道和密码](img/云GPU的SSH连接的通道和密码.png)
然后打开vscode的远程连接插件,选择远程(隧道/SSH)连接,点击加号并粘贴上面的通道
![alt text](img/云服务器设置SSH.png)
之后会提示你选择要更新的SSH配置文件,一般有两个,选第一个就行,选择之后你的云GPU的服务器的登录信息就会添加到vscode的SSH配置文件中,下次打开vscode就可以直接连接云GPU服务器了。"新建远程"按钮左边就是配置文件,直接点开手动配置也是可以的,记得保存。
至于密码,提示你输入密码的时候输入即可。
# 远程连接linux服务器
# 远程连接linux服务器
linux服务器的网络环境可能是固定IP、随机IP,也可能是内网IP
- 常规情况的判断方法:固定IP是购买获得,随机IP是linux直接连接互联网,内网IP是使用路由器连接互联网
对于固定IP,远程连接linux服务器的操作与远程连接云GPU的操作类似,只是你需要知道你的linux服务器的IP地址及密码。
对于随机IP,你可能需要通过`ifconfig``ipconfig`检查linux的IP地址,然后通过ssh连接。
对于内网IP,有两种方案
- 一种是登录路由器,给自己的linux服务器设置一个用于连接的端口(端口连接)
- 你可以使用`ifconfig``ipconfig`命令查看网关的IP地址用于登录路由器,登录的账号密码可以在路由器上找到,或者咨询相关负责人。
- 另一种是寻找一个linux服务器和本地计算机都能访问的固定IP地址服务器作为中介,转发本地计算机和linux服务器之间的请求。(内网穿透)
- 有很多提供内网穿透服务的软件提供商,你可以自行搜索。由于服务提供商会提供用于转发的具有公网IP的服务器,因此一般会需要你付费。
linux服务器的IP地址需要你根据自己的服务器具体情况自行解决
获得linux服务器的IP地址的访问方法后,后续配置步骤与[云GPU服务器远程连接配置方法](./步骤2-2_远程连接云GPU服务器.md)相同。
# 在开始linux环境配置前,需要明确以下几个问题
# 在开始linux环境配置前,需要明确以下几个问题
## 请确认是否有linux环境配置需求
- linux环境配置不是新手村的必要内容,本章节内容是针对有linux使用需求的同学进行准备的。
- 如何判断自己是否需要配置linux环境
- 如果自己有符合下方使用场景的情况,说明需要配置。
- 如果自己都不知道自己是否需要配置linux环境,则不需要配置。
- 如果嫌新手村的windows配置环境过程太简单了,并且对linux感兴趣,可以考虑学一下。
- 单纯非使用需求只是学习的话,请选择下方场景1的配置路线。
- 如果你是linux的初学者,请另外阅读linux入门文档。
### 常见的linux使用场景介绍
- 场景1:使用windows操作系统时遇到使用linux的需求。
- 场景1的解决方案:推荐使用WSL2,不推荐双系统或虚拟机。
- 本文档提供了wsl2的配置教学作为配套。
- 本文档不提供双系统或虚拟机的配置方案,但如果你已经完成了双系统或虚拟机的配置,可以在场景1和场景4中二选一。
- 场景2:因业务、学习等需求而需要远程连接实验室、个人、公司的linux服务器
- 场景3:租用云GPU,云GPU一般搭建在linux服务器上。
- 场景3会以点头云GPU作为示例,视频课中也有介绍。
- 场景4:使用了linux桌面操作系统的电脑并希望在该linux桌面操作系统中配置环境
- 要使用另一台电脑连接该电脑时,属于场景2。
## 本文档的教学目标
本文档的撰写目的是教会大家能够掌握在linux操作系统中配置和使用深度学习环境的方法。
“配置和使用深度学习环境”具体来说包括:
- 在linux上完成conda的安装
- 使用conda创建虚拟环境
- 在虚拟环境中安装torch和其他深度学习所需要的python包
- 使用vscode操作linux系统,完成以下操作
- 编写和使用linux上的虚拟环境执行代码文件
- 上传和下载文件(例如项目代码文件和数据集)
## 上述不同使用场景的同学如何食用本文档
首先请完成“打开linux的bash shell”这一步操作
说明:bash shell在linux中的功能和powershell/cmd在windows中的功能定位是一样的,都可以单独打开或使用vscode的终端窗口打开。
- 直接打开bash shell
- 对于场景1,需要先完成wsl的配置教学
- 对于场景2,你应该能够自行解决
- 对于场景3,一般在云GPU平台会提供终端按钮之类的,如果没有那就下面这种方法
- 使用vscode远程连接在终端打开bash shell
- 对于场景1,在直接打开bash shell的基础上,再完成远程连接的配置教学(就一点)
- 对于场景2,在直接打开bash shell的基础上,再完成远程连接的配置教学
- 对于场景3,完成远程连接的配置教学
- 远程连接配置教学很简单,并且针对上述不同配置场景进行了分类,请按需食用。
你可以在能够直接打开bash shell的基础上先学习如何使用vscode远程连接在终端打开bash shell再学习conda的环境配置,或者反过来先完成conda的环境配置再学习使用vscode远程连接,都可以。
- 对于场景4,直接按照linux版vscode即可,不需要远程连接,单独有一篇文档介绍linux版vscode的安装。conda的配置则依然遵循conda的环境配置
注:一会把“conda的环境配置”和“vscode远程连接”替换成文件夹的名字。
## 另外
linux操作系统环境配置与windows不同,可能需要全程都在shell页面进行操作,因此为了通用性上的考虑,本文档默认linux场景123只有一个bash shell页面。只有场景4的vscode安装涉及到了图形用户界面(毕竟vscode没图形交互界面用不了。CLI版除外,但是这个超纲了。)
本文档测试时使用的linux操作系统类型为ubuntu。
为什么没有pycharm:因为pycharm远程连接功能是付费的。
++ "b/2-AI\347\216\257\345\242\203\351\205\215\347\275\256/2.2-\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272/2.2.2-Linux/\346\241\214\351\235\242\347\253\257linux\347\232\204vscode\345\256\211\350\243\205/.gitkeep"
++ "b/2-AI\347\216\257\345\242\203\351\205\215\347\275\256/2.2-\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272/2.2.2-Linux/\346\241\214\351\235\242\347\253\257linux\347\232\204vscode\345\256\211\350\243\205/img/.gitkeep"
# linux桌面端(也就是图形化界面)操作系统的vscode安装教程
# linux桌面端(也就是图形化界面)操作系统的vscode安装教程
以目前最流行的ubuntu桌面操作系统为例,默认为新安装的ubuntu操作系统
- 首先使用火狐(或者其他)浏览器打开vscode官网<https://code.visualstudio.com/>选择`.deb`格式下载
- 然后按图示操作,遇到弹窗选择yes即可
- 新人提示:`sudo apt install`指令中是`sudo`不是`sudu`
![vscode下载安装一图流](img/vscode下载与安装.png)
对于安装最后可能出现的信息的说明
>N: 由于文件'/home/xxx/下载/code_xxxxxxxxx.deb'无法被用户'_apt'访问,已脱离沙盒并提权为根用户来进行下载。 - pkgAcquire::Run (13: 权限不够)
- “已脱离沙盒并提权为根用户来进行下载。”说明已经自动解决这个问题了,不用管。
>给别的电脑下载vscode的安装包时的下载方案
>vscode下载页:<https://code.visualstudio.com/Download>中还提供了更多的安装包格式
>tar.gz压缩包格式,安装方法`tar -zxvf 压缩文件名.tar.gz`
>Snap snap商店安装包
>其中的x64 Arm32 Arm64是针对不同的处理器架构,可以在bash shell中使用`arch`或`getconf LONG_BIT`查看自己的处理器架构。
>提示:如果当前暂时接触不到需要安装的那台电脑并且不知道其处理器架构,不妨全部都下载过来...
# Linux操作系统入门
# Linux操作系统入门
本节内容主要提供给有Linux使用需求而又不了解Linux操作系统的同学参考。
提示:
- `` ` ``是在键盘左上方边缘、`TAB`的上面、`1`的左边、`ESC`的下面的那个键
- `~``shift`+`` ` ``
- windows的路径中的斜杠是`\`,而linux的路径中的斜杠是`/`,注意区分。
- `\``Enter`键上面、退格键下面,`/`在右`shift`左边,`M`键右右右边。
- 以上键输入时请用英文输入法
## linux操作系统种类介绍
我们经常接触的电脑端的linux操作系统一般有以下几类
- wsl/服务器端的linux操作系统
- 此类操作系统一般只通过bash shell进行控制,也就是环境配置过程中全程都在面对`bash shell`的窗口。
- 服务器端的使用需求一般是连接实验室/个人linux服务器和租用云GPU服务器
- 图形化界面的linux操作系统
- 可以通过鼠标键盘点击各种图标进行操作,和windows操作系统相同,当然,也可以使用`bash shell`进行配置。
- 使用wsl+远程操作是更为方便的配置linux环境的方法。
- 图形化界面操作系统的主要存在价值是具有和windows操作系统竞争的潜力,
很显然,掌握`bash shell`的基本用法是使用linux操作系统的最基本能力。
## bash介绍
### bash shell是用来做什么的
- bash shell和鼠标键盘的基本功能一样:都是用来操作“操作系统”的工具。从最基本的查看、复杂粘贴文件,到对电脑的各种软硬件进行安装配置,都可以通过在bash shell中输入指令完成。事实上,在鼠标和windows发明之前,电脑的主要操作方式就是使用命令行。
- 学习bash shell其实就是在学习bash shell的各种功能的指令的用法。
- 上面的表述同样适用于windows的cmd和powershell。
### bash shell页面介绍
- bash shell的标志性特征是`用户名@计算机名:~$`。当看到`$`结尾的命令行时,就说明后面要输入的指令应当是“linux指令”。
- 在使用root用户时,前面的标记会变成`#`,例如`root@计算机名:~#`,某些情形下也可能会带中括号`[root@计算机名]:~#`
- 在完成conda的环境配置后,前面会增加已激活环境的标记,例如`(base) 用户名@计算机名:~$`
- 额外科普
- 类似的,cmd打开时的页面一般为`C:\Users\用户名>`
- powershell则会比cmd多一个`PS`标记:`PS C:\Users\用户名>`
- linux的目录斜杠与windows的是相反的,往下看就会发现。
- 萌新注意
- 不要手动输入`$`
## linux的基本操作
以下是常用指令和接下来linux环境配置会被用到的指令的说明
当你打开/远程连接一个linux服务器
### 目录操作
linux操作系统的根目录的标记为`/`、linux当前用户的目录为`~`
目录操作是最基本的指令,常用命令如下
- 专供查询,不需要背,用多了自然熟练。
- 以下命令,在成功执行后一般不会出现诸如“操作完成、删除完成”之类的废话,出现新的命令行就说明执行成功了。
常用基本目录操作命令
```bash
# 列出当前目录的文件/文件夹名(新版,彩色渲染)
ls
# 列出当前目录的文件/文件夹名(更旧的指令)
dir
# 返回上级目录,如果已经在根目录/则森么也不做
cd ..
# ====================
# 使用绝对路径的方式切换目录
# 第一个字符是/就是绝对路径
# 这个指令可以在任意目录时切换到指定目录
cd /home/wlm/abc
# 进入根目录。权限不足可能会失败
cd /
# 进入用户目录中的abc文件夹
# linux系统中~代表
cd ~/abc
# ====================
# 使用相对路径的方式
# 第一个字符不是/就是相对路径
# 如果当前目录是/aaa则执行后会进入目录/aaa/abc
cd abc
# ====================
# 进入用户的个人目录
# 这个指令同样可以在任意目录时使用
cd ~
# 这个指令同样可以后接子目录
cd ~/abc
# ====================
# 以abc为例举例删除和创建文件夹的操作
# 创建一个名为abc的文件夹
mkdir abc
# 删除文件/文件夹(可以先用dir指令列出名字)
rm -r abc
# 删除文件(安全删除:如果这是个文件夹会删除失败)
rm abc
# 删除空文件夹(安全删除:文件夹非空会删除失败)
rmdir abc
# 创建文件操作:请用vscode, 此处略
# 打印当前目录的绝对路径
# 主要有用的点就是能够打印~目录的绝对路径
pwd
```
如需要更多命令可以在搜索引擎搜索`linux命令手册`之类的关键词进行搜索。
### 接下来环境配置时会用到的指令说明
下面的这些指令会在接下来环境配置的过程中进行用到,你可以先阅读一下下面的内容以便在用到时理解指令的含义,或者在需要时进行查阅,当然不阅读下面的指令也是可以完成环境配置的,只是对于某些零基础学员来说,可能会配置的一头雾水。
```bash
```
\ No newline at end of file
# 可选步骤:conda使用前的配置
# 可选步骤:conda使用前的配置
## 简介
本节内容是针对不同用户的电脑硬盘大小和网络情况等因素对conda进行配置的内容,包括把虚拟环境的存储路径修改到容量更大的硬盘、将conda的下载源修改为国内的镜像源以提高下载速度的方法等内容。
本节内容皆为需要根据自身需求进行设置的可选性内容,请按需修改。
本节内容并不是只包含conda使用“前”的配置内容,也根据实际使用需求提供了迁移虚拟环境的方法等。
## 修改/迁移conda的虚拟环境的保存路径
虚拟环境的所有内容都打包在一个文件夹中,可以很方便的进行手动迁移
如果有需要迁移的环境,首先使用`conda env list`列出环境列表,其中也包含环境的当前路径。
然后添加一个新的路径作为conda检索和新建虚拟环境的路径,具体说明见下图。
![conda虚拟环境路径](img/conda虚拟环境路径配置.png)
## 设置镜像下载源
conda在创建和维护虚拟环境时,需要联网查找和下载所需的各种资源,由于conda(和其他类似的需要互联网下载服务的开发工具)的下载源服务器位置在国外,因此国内一些大学和公司提供了镜像下载源网站服务于国内开发人员。
conda本身也提供了使用指令修改自身下载源的设置方法,复制下方指令逐个添加即可。
```zsh
# 推荐设置:下载包时显示所有镜像源
conda config --set show_channel_urls yes
# 以下为conda的清华镜像下载源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
```
## 补充:使用pip下载时临时指定下载源的方法
以清华源为例:在安装指令的末尾添加`-i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple`即可,示例如下:
```zsh
# 原指令
pip install numpy
# 使用镜像源的指令
pip install numpy -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
```
# vscode/pycharm 和 miniconda 的安装
# vscode/pycharm 和 miniconda 的安装
## 软件安装选择说明
我们需要安装一个用来编写代码的工具:vscode或者pycharm二选一,以及用来执行代码的工具:conda。
两个软件的关系:
没有vscode或pycharm只有conda你可以跑代码,但是不方便编写代码,没有conda那么你的代码就只是一堆文字而不能执行。
vscode和pycharm是同类产品,二选一即可,如果你熟悉pycharm可以选择pycharm,如果你两个都不熟悉那么我们更推荐vscode,因为pycharm免费版不支持远程连接和jupyter插件,vscode则是全部支持且免费的。
请不要同时安装vscode和pycharm,这是不必要的重复操作。
## vscode/pycharm安装
vscode下载链接
><https://code.visualstudio.com/Download>
pycharm下载链接
>注意上面是付费版(Professional版),需要稍微下拉才是免费版(Community Edition)
><https://www.jetbrains.com.cn/en-us/pycharm/download/?section=mac>
>pycharm的下载按钮分裂成了左右两瓣,点左边的download即可。
vscode下载后是一个压缩包,mac操作系统双击压缩包会自动解压到当前目录。
解压完成后将解压后的文件从下载栏拖动到应用程序栏即可。
具体操作见下面两张图。
![alt text](img/vscode安装图一.png)
![更方便启动的设置](img/vscode安装图二.png)
pycharm双击后会直接出现一个提示你拖动的页面,直接拖就行了。
>别忘了pycharm和vscode是二选一的关系,不需要都下载安装哦!
![pycharm的贴心提示](img/pycharm安装图.png)
## miniconda安装
mac版的conda安装页面是全中文的,也没有额外选项,应该不需要额外说明。
![mac的conda安装](img/mac的conda安装截图.png)
conda的功能一般是在“终端”中使用的,conda安装成功后的操作方法是在终端中执行conda相关的指令,不是一般的需要单独打开一个窗口的应用程序,这点要注意。
conda在终端中的使用方法是下一部分的内容,因此关于终端的更多说明请详见步骤2
# conda虚拟环境的配置
# conda虚拟环境的配置
## 终端介绍
步骤一中提到,conda的使用方法是在终端中,这里首先介绍下什么是终端
终端是每个操作系统都有的一个基本功能,是一个对于编程很重要,但对于普通用户没什么存在感的功能。每种操作系统都有自己的终端,我们不需要深入涉及终端的指令语法知识,只需要借用终端页面使用conda指令即可。
## mac端的终端打开方式
首先在程序坞点击启动台,然后点击其他,然后点击终端
![mac终端打开](img/mac终端打开方式.png)
![alt text](img/mac终端打开方式2.png)
若conda已安装完成,终端的命令输入行的行首应该会有(base)标记,如下图
![mac终端的展示](img/mac终端展示.png)
## vscode端/pycharm端的打开方式
vscode和pycharm会将终端集成到自身的界面内以方便程序员使用终端,如下图
![mac端的vscode页面展示](img/mac端的vscode页面展示和说明.png)
![pycharm页面终端展示](img/pycharm终端页展示.png)
打开终端后,我们就可以在终端操作conda配置一个python的虚拟环境了。
\ No newline at end of file
# conda的虚拟环境操作
# conda的虚拟环境操作
## 流程简介
我们首先要创建一个新的python环境
然后会根据新创建的环境介绍一些conda及其创建的虚拟环境的工作原理和机制,这些介绍是基于经常被问到、用到、或者易引起使用问题的经验总结出的。
另外,独立打开的终端、在vscode中打开的终端、在pycharm中打开的终端本质上都是同一个玩意儿,所以后续步骤将只以vscode为例进行。
附:如果你在完成本教程后忘记了某些conda指令,可以在本教学配套的[conda使用手册](../1.1.2-Windows深度学习环境搭建/conda使用手册.md)中进行速查,该文档在windows环境配置章节中存放,但适用于所有操作系统,因为conda指令在所有操作系统中通用。
## 创建一个新环境
为了避免造成混淆,我们新建一个名为`aaaa`的新虚拟环境:
```
conda create -n aaaa
```
## 机制讲解
虚拟环境创建后,其中所有内容都保存在一个文件夹之中,这保证了迁移虚拟环境的便利性
我们可以使用指令列出conda的所有虚拟环境及其路径。
# conda的python虚拟环境的配置
# conda的python虚拟环境的配置
pytorch的安装涉及到了GPU版和CPU版的选择,一些对硬件的检查等内容,相比其他的常见库的安装要复杂的多...
——不过
mac电脑已经抛弃了N卡
所以mac电脑一般只需要安装CPU版torch就好了,需要GPU版提供算力时就用其他电脑或者租云GPU吧。学习阶段的影响应该不大。
## MAC上的CPU版pytorch安装
![torch安装截图](img/torch官网截图MAC版.png)
上面的运行指令的执行方法:在终端中执行。
这里直接提供了上图中的MAC端的torch默认安装指令和使用镜像源的安装指令,方便复制。
```zsh
# 使用conda默认源安装
conda install pytorch::pytorch torchvision torchaudio -c pytorch
# 使用conda镜像源安装,需在配置好镜像源后执行
conda install pytorch::pytorch torchvision torchaudio
# 使用pip默认源安装
pip3 install torch torchvision torchaudio
# 使用pip镜像源(临时指定)安装
pip3 install torch torchvision torchaudio -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
```
## 安装其他第三方库
- 其他第三方库的安装主要要注意点在于安装时的名称与常用称呼可能不一致,例如`sklearn`在安装时要使用全称`scikit-learn`,类似`pytorch``torch`
- 以下是一些深度学习常用第三方库的安装指令,注意不要安装到base环境中。
```powershell
conda install numpy
conda install pandas
conda install matplotlib
conda install seaborn
conda install scipy
conda install scikit-learn
```
linux服务器的远程连接部分集成到了[linux深度学习环境搭建的子目录](../1.1.3-Linux深度学习环境搭建/使用vscode远程连接各种类型的linux服务器/)中,点击跳转即可。
linux服务器的远程连接部分集成到了[linux深度学习环境搭建的子目录](../1.1.3-Linux深度学习环境搭建/使用vscode远程连接各种类型的linux服务器/)中,点击跳转即可。
\ No newline at end of file
{
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## python基础入门"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello woorld\n"
]
}
],
"source": [
"print(\"hello woorld\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\n"
]
}
],
"source": [
"print(1,2,3,4,5)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2\n"
]
}
],
"source": [
"acc=1\n",
"epoch=2\n",
"print(acc,epoch) # acc为深度学习模型训练的精度指标,epoch为轮数"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\n",
"1->2->3->4->5\n"
]
}
],
"source": [
"print(1,2,3,4,5)\n",
"print(1,2,3,4,5,sep=\"->\") # sep指定输出的分隔"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\t1 2 3 4 5\n"
]
}
],
"source": [
"print(1,2,3,4,5,end=\"\\t\") # \\t为制表符,默认一个tab\n",
"print(1,2,3,4,5)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\n",
"1 2 3 4 5\n"
]
}
],
"source": [
"print(1,2,3,4,5) # \\n为换行\n",
"print(1,2,3,4,5)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"f = open(\"test.txt\",\"a\") # 若没有此txt文件则先创建,然后将内容追加在末尾\n",
"print(\"\\n\",file=f)\n",
"print(\"中文报错,print后面括号为中文()\",file=f)\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.30000000000000004\n"
]
}
],
"source": [
"print(0.1+0.2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1690473024512\n",
"1690473024512\n"
]
}
],
"source": [
"list1 = [1,2,3,5]\n",
"print(id(list1))\n",
"list1[1] = 5\n",
"print(id(list1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 格式化输出"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"我叫qianyu,今年18岁啦\n"
]
}
],
"source": [
"print(\"我叫%s,今年%d岁啦\" % (\"qianyu\",18)) # %s为字符串 %d为整型"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"学校的名称是点头教育,学习的网站是wwww.diantouedu.cn\n"
]
}
],
"source": [
"print(\"学校的名称是{},学习的网站是{}\".format(\"点头教育\",\"wwww.diantouedu.cn\"))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n"
]
}
],
"source": [
"# f表达式格式化输出\n",
"name = \"qianyu\"\n",
"age = 19\n",
"print(f\"我叫做{name},今年{age}岁啦\")\n",
"print(f\"我叫做{name},今年{age}岁啦\")\n",
"print(f\"我叫做{name},今年{age}岁啦\")\n",
"print(f\"我叫做{name},今年{age}岁啦\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n"
]
}
],
"source": [
"print(\"我叫做qianyu,今年19岁啦\")\n",
"print(\"我叫做qianyu,今年19岁啦\")\n",
"print(\"我叫做qianyu,今年19岁啦\")\n",
"print(\"我叫做qianyu,今年19岁啦\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"训练轮数为1\n"
]
}
],
"source": [
"epoch = 1\n",
"print(f\"训练轮数为{epoch}\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']\n"
]
}
],
"source": [
"import keyword\n",
"print(keyword.kwlist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 变量"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2437147683120\n",
"2437147683152\n"
]
}
],
"source": [
"a = 1\n",
"print(id(a)) \n",
"# print(type(a)) ctrl+/为整体注释\n",
"a = 2\n",
"print(id(a))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 输入函数"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello\n",
"<class 'str'>\n"
]
}
],
"source": [
"age = input() # 无论输入的是什么 都会被转化为字符串类型\n",
"print(age)\n",
"print(type(age))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "test",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
# Python基础编程
# Python基础编程
这个仓库包含了关于第一和第二节课的Python基础编程代码。
## 第一节课
- 代码文件: `python基础入门.ipynb`
- 文本文件: `test.txt` (包含一些常见的报错,是第一节课中用到的文本文件)
## 第二节课
- 代码文件: `六大数据类型2.ipynb`(六大数据类型.ipynb为往期代码,可做参考)
\ No newline at end of file
# Python基础报错例子
# Python基础报错例子
SyntaxError(语法错误):
print "Hello, World!"
# 缺少括号,应该是 print("Hello, World!")
IndentationError(缩进错误):
def my_function():
print("Hello, World!")
# 函数体缩进不正确
NameError(名称错误):
print(x)
# x未定义
TypeError(类型错误):
x = "5"
y = 2
z = x + y
# 字符串和整数不能直接相加
IndexError(索引错误):
my_list = [1, 2, 3]
print(my_list[3])
# 索引超出了列表范围
KeyError(键错误):
my_dict = {"name": "Alice", "age": 30}
print(my_dict["gender"])
# 字典中没有"gender"这个键
ValueError(数值错误):
int("abc")
# 无法将非数字字符串转换为整数
FileNotFoundError(文件未找到错误):
with open("nonexistent_file.txt", "r") as f:
content = f.read()
# 文件不存在
ImportError(导入错误):
import nonexistent_module
# 未安装或导入的模块不存在
ZeroDivisionError(除零错误):
result = 10 / 0
# 除数为零
AttributeError(属性错误):
x = 5
print(x.append(1))
# 整数对象没有append()方法
KeyboardInterrupt(键盘中断):
while True:
pass
# 执行这段代码后,按下Ctrl+C将会中断程序执行hello world
中文报错,print后面括号为中文()
### Python进阶知识
### Python进阶知识
这里是Python部分进阶的知识,主要包括以下内容:
#### 1. 三大程序结构
- **顺序:** 指程序从上到下按照顺序执行的结构。
- **分支:** 涉及条件判断,根据条件不同执行不同的代码块。
- **循环:** 允许代码块多次执行,直到满足退出条件为止。
#### 2. 函数的定义和使用
函数是一段可重复使用的代码块,可以接受参数并返回值。
#### 3. 经典编程案例
- **递归求n阶乘:** 通过递归方式计算给定数的阶乘。
- **求解水仙花数:** 寻找指定范围内的水仙花数,即每位数字的立方和等于该数本身的数。
## 本章节讲解的是 Python 面向对象编程的相关内容,包括类和对象的定义和使用、封装、继承、多态。在学习本章之前需要先看环境配置、Python基础、进阶课程
## 本章节讲解的是 Python 面向对象编程的相关内容,包括类和对象的定义和使用、封装、继承、多态。在学习本章之前需要先看环境配置、Python基础、进阶课程
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment