二十一、Ubuntu22.04 配置 Anaconda + Pycharm + Pytorch

早睡早起的程序员小姚 2024-07-19 12:37:02 阅读 72

二十一、Ubuntu22.04 配置 Anaconda + Pycharm + Pytorch

1. Python、Anaconda、Pycharm 关系介绍1.1 Python1.2 Anaconda1.3 Pycharm1.4 常见开发搭配 Anaconda + Pycharm

2. Anaconda3 的安装及使用方法2.1 安装 Anaconda32.2 常用的 Conda 命令

3. Pycharm 的安装及使用方法3.1 安装 Pycharm3.2 汉化3.3 卸载 Pycharm

4. Pycharm 和 Anaconda 关联4.1 新建项目,选择已有的 Conda 环境4.2 更换 Conda 环境

5. 在 Conda 环境中安装 Pytorch 和 torchvision5.1 Pytorch 和 torchvision 简介5.2 必须与 Python 解释器兼容5.3 必须与 CUDA 版本对应5.4 安装 & 冲突解决

1. Python、Anaconda、Pycharm 关系介绍

1.1 Python

Python 是一种解释性语言,在运行 .py 代码前,需要安装 Python 解释器

Python 解释器会逐行读取代码,并在执行时逐行解释成机器码或字节码,然后执行

常见的 Python 解释器有 CPython、Jython 等

<code>CPython 是 Python 官方解释器,用 C 语言实现,是最常用和广泛支持的 Python 解释器,也是标准的参考实现

Jython 是一个在 Java 虚拟机(JVM)上运行的 Python 解释器,它将 Python 代码编译成 Java 字节码 并在 JVM 上执行

Ubuntu22.04 默认安装 Python3 解释器

python3 --version

我这里的版本是 Python 3.10.12

暂时没用到 Python2,暂时先不装

在这里插入图片描述

运行一个简单的 .py 程序

只需要在终端输入

<code>python3 example.py

在这里插入图片描述

在这里插入图片描述

1.2 Anaconda

Anaconda 是一个 Python 数据科学平台,它提供了一个包管理系统和环境管理工具

Anaconda 中 自带 <code>Python 解释器 (不需要自己再安装 Python )和 一大堆安装好的工具包,如 NumPy、Matplotlib 等

Anaconda 还提供了一个名为 Conda 的包、环境管理工具,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换

因为包含了大量的工具包,Anaconda 的下载文件比较大,如果只需要某些包,也可以使用 Miniconda 这个简约版(仅包含Conda 和 Python 解释器)

1.3 Pycharm

Pycharm 是一款用于 Python 开发的 IDE

提供了一整套提高 Python 开发效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示等

当然也可以选择其他的编辑器,比如 VSCode

1.4 常见开发搭配 Anaconda + Pycharm

初学者:Python解释器 + Pycharm

对于只学习 Python 语言的初学者,可以先下载好特定版本的 Python解释器,然后再搭配界面程序 Pycharm 来进行简单的语法学习和项目调试

因为不需要考虑不同项目需要不同 Python工具包的版本问题

项目开发者:Anaconda + Pycharm

对于需要进行项目开发的人员,时常有多个项目同时开发,并且不同的项目需要不同版本的工具包

这时使用 Anaconda 可以帮助我们管理更多项目的环境,将每个项目单独放在一个 虚拟环境 中,并且使这些环境中工具包相互独立,不会产生工具包版本冲突问题,并且可以下载多个版本的工具包,可以安装多个不同版本的 Python解释器

2. Anaconda3 的安装及使用方法

2.1 安装 Anaconda3

Anaconda3 是 Anaconda 的具体版本

Anaconda3 中的 Python 解释器默认使用的是 Python3.x 版本,而不是 Python2.x 版本

Python2.x 版本中,字符串是以 ASCII 编码处理的,而在 Python3.x 版本中,字符串是以 Unicode 编码处理的

安装 Anaconda 的最佳方法是下载最新的安装程序 bash 脚本, 然后运行它

Anaconda 官网下载

在这里插入图片描述

如果下载速度太慢的话,也可以通过清华大学开源软件镜像站下载

清华大学开源软件镜像站

在这里插入图片描述

进入安装脚本所在的目录,运行它

<code>bash Anaconda3-2023.09-0-Linux-x86_64.sh

一路回车和 yes

最后选择安装位置,我这里选择默认

在这里插入图片描述

安装过程中系统PATH有变动,需要source一下

<code>source ~/.bashrc

此时命令行前会出现 (bash) 字样,这是因为安装过程中在PATH中添加了conda初始化代码,自动激活了 base 环境

所以这里就直接进入了 Conda 的 base 环境,换一个终端也还是激活状态,比较烦人…

在这里插入图片描述

base 环境是 Anaconda 安装时自动创建的默认环境

这个环境中包含了 Anaconda 中的 Python 解释器和一些核心库,如 NumPy、Matplotlib 等

除了 base 环境之外,你应该创建其他的 Conda 环境,每个环境互相独立,都是一个独立的 Python 运行环境,可以包含不版本的 Python 解释器和其他库

在这里插入图片描述

禁止Conda 自动激活 base 环境

输入以下指令,然后重启终端即可

<code>conda config --set auto_activate_base false

如果再想进入 base 环境,只需要手动激活即可,不过只对当前终端有效

conda activate base

虚拟环境中的 Python 解释器版本和 Ubuntu22.04 自带的版本并不一致

在这里插入图片描述

验证 Anaconda 是否安装成功

<code>conda --version

# 列出当前激活环境(没激活的话,默认是 base 环境)中安装的所有包以及Python解释器

conda list

在这里插入图片描述

2.2 常用的 Conda 命令

配置 conda 镜像源

创建虚拟环境的时候,下载太慢了,老出问题

换成国内的源

<code># 查看当前镜像源

conda config --show channels

# 添加清华源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

# 从channel中安装包时显示channel的url,这样就可以知道包的安装来源

conda config --set show_channel_urls yes

# 清除索引缓存,保证用的是镜像站提供的索引

conda clean -i

在这里插入图片描述

或者直接修改 ~/.condarc(最强硬)

<code>sudo gedit ~/.condarc

文本替换成下面的内容

channels:

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

- defaults

auto_activate_base: false

show_channel_urls: true

虚拟环境管理

注意:我们可以将前面带有两个短线(–)的常用命令进行缩写(并不是所有的都可以缩写)

方法:是取一个短线和选项的首字母

例1:–name 可以缩写成 -n

例2:–envs 可以缩写成 -e

# 列出所有已创建的 Conda 虚拟环境及其信息,包括环境名称、路径、Python解释器的版本

conda info --envs

# 创建虚拟环境

conda create --name <虚拟环境名>

# 创建虚拟环境 + 指定Python解释器的版本为3.7

conda create --name <虚拟环境名> python=3.7

# 创建虚拟环境 + 指定Python解释器的版本为3.7 + 指定虚拟环境路径

# 如果不手动指定安装路径的话,虚拟环境默认安装在 /home/yao/anaconda3/envs (除了 base 环境)

conda create --prefix /path/to/envs --name <虚拟环境名> python=3.7

# 激活虚拟环境,使环境中的Python解释器和库可用

conda activate <虚拟环境名>

# 退出虚拟环境

conda deactivate

# 删除虚拟环境(包括环境中的所有包和文件)

conda remove --name <虚拟环境名> --all

我这里新建了一个虚拟环境 myEnv,Python解释器版本选择 3.7

在这里插入图片描述

在这里插入图片描述

虚拟环境中的 Python 解释器被安装在 bin 目录下

这点很重要,后面用 Pycharm 创建项目需要选上

在这里插入图片描述

包管理

<code># 安装包

# pip install PackageName # 用 pip 安装 也可以

conda install PackageName

# 安装多个包

conda install PackageName1 PackageName2 ...

# 安装包并指定版本号

# pip install PackageName==版本号 # 注意这里是两个等号

conda install PackageName=版本号 # 注意这里是一个等号

# 卸载包

conda remove PackageName

# 更新包

conda update PackageName

# 更新环境中的所有包

conda update --all

# 列出已安装的包

conda list

# 搜寻包

conda search PackageName

3. Pycharm 的安装及使用方法

3.1 安装 Pycharm

Pycharm 下载

下载免费的社区版即可

专业版需要激活

在这里插入图片描述

解压缩

<code>tar -xvf pycharm-professional-2023.2.2.tar.gz

# 然后把解压缩文件复制到家目录

mv pycharm-community-2023.2.2 ~

在这里插入图片描述

进入 Pycharm 目录下的 bin 目录,然后运行安装脚本

<code>cd ~/pycharm-community-2023.2.2/bin

sh ./pycharm.sh

在这里插入图片描述

选择 <code>Continue

在这里插入图片描述

在打开 Pycharm 启动页面后,在左下角的 configure 选项中选择 ”Create Desktop Entry “ 创建桌面快捷方式

在这里插入图片描述

在这里插入图片描述

3.2 汉化

打开 Pycharm,找到 Plugins,搜索 Chinese,然后安装中文语言包

在这里插入图片描述

安装完成后,点击 <code>restart IDE 重启

3.3 卸载 Pycharm

上文已经提到所有的程序相关文件都保存在了 /home/yao/pycharm-community-2023.2.2 目录下

配置信息文件是在/home/yao/.config/JetBrains 下的 PyCharmCE2023.2 目录中

缓存文件是在/home/yao/.cache/JetBrains 下的 PyCharmCE2023.2 目录中

# 删除程序相关文件

sudo rm -r /home/yao/pycharm-community-2023.2.2

# 删除配置文件

rm -r ~/.config/JetBrains/PyCharmCE2023.2

# 删除缓存文件

rm -r ~/.cache/JetBrains/PyCharmCE2023.2

4. Pycharm 和 Anaconda 关联

4.1 新建项目,选择已有的 Conda 环境

打开 Pycharm

新建一个项目,起名 testProject

然后可以选择我们之前创建好的虚拟环境(也可以自己新建一个 Conda 虚拟环境)

这里就会自动选上 Conda 虚拟环境中的 Python解释器

在这里插入图片描述

4.2 更换 Conda 环境

后面要修改的话,就直接 <code>文件 — 设置项目:XXXPython 解释器

在这里插入图片描述

Python 控制台:启动 Python 解释器,进入交互式 Python 环境

在这个环境中,你输入 Python 代码会被立即执行,便于代码调试

在这里插入图片描述

在这里插入图片描述

5. 在 Conda 环境中安装 Pytorch 和 torchvision

5.1 Pytorch 和 torchvision 简介

Pytorch:是一个非常 NB 的开源机器学习库,用于构建深度学习模型

torchvision:是 Pytorch 的一个扩展包,提高了一系列用于处理图像和视频数据的功能,包括数据加载、预处理、数据转换、模型定义和评估等

5.2 必须与 Python 解释器兼容

Pytorch、torchvision 版本必须和 <code>Python 解释器版本 兼容

在这里插入图片描述

5.3 必须与 CUDA 版本对应

Pytorch、torchvision 版本必须和你的 <code>CUDA 版本 对应起来!!!

推荐去官网:根据版本选择安装指令

可以选择 Conda 或者 Pip 安装,这是两个不同的包管理器,都可以用,不过指令略有不同

我的 Ubuntu系统中没装 Pip,但是Conda 的虚拟环境中预装了 Pip,所以可以在激活的环境中使用

在这里插入图片描述

但是我这里安装的是 CUDA 11.7,所以我只能安装 CUDA 11.7 及以下的版本的 Pytorch 包,得去找历史版本

历史版本

例如:Pytorch 版本 2.0.1 ,支持 CUDA 11.7

通过 conda 安装

在这里插入图片描述

<code>-c pytorch 和 -c nvidia 中的 c 表示 channel,指定了软件包的来源,分别是 Pytorch 和 NVIDIA 的 conda 仓库,所以很有可能会出现安装非常缓慢的情况

可以选择国内的镜像源来下载

channels:

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/

- defaults

auto_activate_base: false

show_channel_urls: true

如果配置了国内镜像源,安装时把 -c pytorch-c nvidia 删掉即可

通过 pip 安装

直接输指令即可

在这里插入图片描述

5.4 安装 & 冲突解决

用 conda 安装

<code># 新建一个虚拟环境,选择 Python 解释器版本为 3.9

conda create --name myEnv39 python=3.9

# 激活创建好的环境,否则会安装到默认的 base 环境中

conda activate myEnv39

# 安装

conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7

# 查看已安装的包

conda list

# 退出虚拟环境

conda deactivate

# 删除虚拟环境(包括环境中的所有包和文件)

conda remove --name myEnv39 --all

一堆冲突!!!

(myEnv39) yao@myUbuntu:~$ conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7

Collecting package metadata (current_repodata.json): done

Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.

Collecting package metadata (repodata.json): done

Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.

Solving environment: \

Found conflicts! Looking for incompatible packages.

This can take several minutes. Press CTRL-C to abort.

failed

UnsatisfiableError: The following specifications were found

to be incompatible with the existing python installation in your environment:

Specifications:

- torchaudio==2.0.2 -> python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0|3.4.*']code>

Your python: python=3.9

If python is on the left-most side of the chain, that's the version you've asked for.

When python appears to the right, that indicates that the thing on the left is somehow

not available for the python version you are constrained to. Note that conda will not

change your python version to a different minor version unless you explicitly specify

that.

The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package pytorch-cuda conflicts for:

torchvision==0.15.2 -> pytorch==2.0.1 -> pytorch-cuda[version='>=11.6,<11.7|>=11.7,<11.8|>=11.8,<11.9|>=12.1,<12.2']code>

torchvision==0.15.2 -> pytorch-cuda[version='11.7.*|11.8.*']code>

torchaudio==2.0.2 -> pytorch==2.0.1 -> pytorch-cuda[version='>=11.7,<11.8|>=11.8,<11.9']code>

pytorch==2.0.1 -> pytorch-cuda[version='>=11.7,<11.8|>=11.8,<11.9']code>

torchaudio==2.0.2 -> pytorch-cuda[version='11.7.*|11.8.*']code>

Package pytorch conflicts for:

torchvision==0.15.2 -> pytorch==2.0.1

torchaudio==2.0.2 -> pytorch==2.0.1

Package openblas conflicts for:

torchaudio==2.0.2 -> numpy[version='>=1.11'] -> openblas[version='0.2.14|0.2.19']code>

torchvision==0.15.2 -> numpy[version='>=1.11'] -> openblas[version='0.2.14|0.2.19']code>

Package typing conflicts for:

torchvision==0.15.2 -> pytorch -> typing

pytorch==2.0.1 -> typing_extensions -> typing[version='>=3.7.4']code>

Package _libgcc_mutex conflicts for:

python=3.9 -> libgcc-ng[version='>=11.2.0'] -> _libgcc_mutex[version='*|0.1',build=main]code>

torchvision==0.15.2 -> libgcc-ng[version='>=11.2.0'] -> _libgcc_mutex[version='*|0.1',build=main]code>

pytorch==2.0.1 -> _openmp_mutex -> _libgcc_mutex[version='*|0.1',build=main]The following specifications were found to be incompatible with your system:code>

- feature:/linux-64::__cuda==12.2=0

- feature:/linux-64::__glibc==2.35=0

- feature:|@/linux-64::__cuda==12.2=0

- feature:|@/linux-64::__glibc==2.35=0

- pytorch==2.0.1 -> __cuda[version='>=11.8']code>

- pytorch==2.0.1 -> libgcc-ng[version='>=11.2.0'] -> __glibc[version='>=2.17']code>

- torchaudio==2.0.2 -> pytorch==2.0.1 -> __cuda[version='>=11.8']code>

- torchvision==0.15.2 -> libgcc-ng[version='>=11.2.0'] -> __glibc[version='>=2.17']code>

- torchvision==0.15.2 -> pytorch==2.0.1 -> __cuda[version='>=11.8']code>

Your installed version is: 12.2

冲突好像是因为用了国内源,换成用 -c pytorch-c nvidia 从官网下载就可以安葬,不会有这些冲突

但速度很慢,最后会因为超时而结束(可以把代理关了,速度会提升

在这里插入图片描述

网上搜了一下

<code>conda 只适合用来环境隔离!作为 virtualenv 的上位替代品!

建议用 conda 创建空的 env,然后用 pip 进行各种 package 的安装

用 pip 安装

可以先配置一下清华源(但对我好像没啥用)

# 激活环境

conda activate myEnv39

# 永久修改

pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple

# 检查是否配置成功

pip config get global.index-url

或者直接修改配置文件

sudo gedit ~/.config/pip/pip.conf

添加文本

[global]

index-url = http://pypi.tuna.tsinghua.edu.cn/simple

然后就可以去安装了

注意把后面的 --index-url https://download.pytorch.org/whl/cu117 删了

不然会覆盖你配置文件中设置的默认源

# CUDA 11.7

pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2

# 消除警告

pip --trusted-host pypi.tuna.tsinghua.edu.cn install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2

在这里插入图片描述

清华源中,没有这个版本!也可能是开了代理,关闭代理重启电脑再试试看

换成 pytorch 1.10.0 试试看

但只能找到支持 CUDA 11.1 的,我的 CUDA 11.7 应该能向下兼容,先装了再说

<code># CUDA 11.1

pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

# 消除警告

pip --trusted-host pypi.tuna.tsinghua.edu.cn install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

# 检查是否安装成功

conda list

速度还挺快的!但貌似添加的清华源没起到一点作用!!还是从 -f 附加的包索引源下载!!很迷

在这里插入图片描述

在这里插入图片描述

删掉 -f 附加的包索引源,再试一次

还是会报错,找不到符合的 torch 很迷

<code>ERROR: Could not find a version that satisfies the requirement torch==1.10.0+cu111 (from versions: none)

ERROR: No matching distribution found for torch==1.10.0+cu111

算了,验证一下 Pytorch 能不能用!

import torch

torch.cuda.is_available()

print(torch.__version__)

在这里插入图片描述

总结:关闭代理!!!!!!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。