news 2026/9/29 6:32:27

Python+PyCharm+PyTorch CPU版深度学习环境安装指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python+PyCharm+PyTorch CPU版深度学习环境安装指南

1. 先想清楚:为什么是 Python + PyCharm + PyTorch CPU 版

我接触过不少刚入门深度学习的朋友,卡住他们的往往不是反向传播、卷积这些概念,而是最前面这一步——环境搭不起来。今天就围绕深度学习环境完整安装(Python+Pycharm+Pytorch cpu版)这个主题,把我这几年在一台台机器上重复折腾了十几遍的流程,完整地拆开讲一遍。这套组合适合三类人:零基础想入门深度学习的学生、手头只有普通笔记本没有独立显卡的开发者、以及需要在一台干净机器上快速跑起一个验证脚本的工程人员。为什么强调 CPU 版,因为不是每个人都有能用的独立显卡,而 CPU 版 PyTorch 在跑小规模模型、验证代码逻辑、做课程作业这些场景下完全够用,安装过程还省去了显卡驱动、CUDA 工具链这一大堆最容易出问题的环节。

我个人的一个判断是:初学阶段最怕的不是跑得慢,而是根本跑不起来。你拿一块高端显卡去装 GPU 版,光驱动版本和 CUDA 版本对应关系就够你查半天,一个不匹配就是一行报错。而 CPU 版的安装链路短、依赖少、报错信息也干净,特别适合用来把“从写代码到看结果”这个闭环先打通。等这套流程你闭着眼都能走一遍了,再升级到 GPU 版就是水到渠成的事,因为那时候你对虚拟环境、包管理、解释器绑定这些底层概念已经心里有数了。

所以这篇文章的目标很明确:让你在一台全新的机器上,从零把 Python、PyCharm、PyTorch(CPU 版)这条链路完整跑通,并且知道每一步为什么要这么做、坑在哪里、出错了怎么查。下面我会按“选型思路 → 分步实操 → 验证跑通 → 问题排查”的顺序展开,每一步都尽量给出可复制的路径和参数。

1.1 CPU 版和 GPU 版的真实差距在哪里

很多人对 CPU 版有误解,觉得 CPU 版就是“残废版”。这个说法要分场景看。深度学习里绝大部分运算本质上是矩阵乘法和卷积,这类运算在 GPU 上因为几千个并行核心同时开工,确实能比 CPU 快几十倍甚至上百倍。但这里有个前提:只有当模型参数量足够大、数据量足够多、batch size 足够大的时候,GPU 的并行优势才能充分发挥。如果你只是跑一个几百个参数的小网络、或者在做一个手写数字识别的练习,瓶颈往往在数据加载和 Python 解释器本身的开销上,这时候 GPU 和 CPU 的差距会被大幅压缩,有时候甚至感觉不到明显区别。

我在一台普通轻薄本上用 CPU 跑 MNIST 做了一个简单对比,一个两层卷积加两层全连接的小网络,训练 5 个 epoch,全程大概几分钟。这个速度用在学习和验证上完全可以接受,你完全可以边看结果边调参数。真正需要 GPU 的场景是:你要训练稍微像样的模型、要处理图像或文本的较大数据集、要做迁移学习微调预训练模型。这种时候 CPU 版会让你等到怀疑人生。所以我的建议是,先 CPU 版把流程和代码逻辑练熟,等确认真要往深里走了,再考虑添置设备或者用带显卡的机器,不要在还没写几行代码的时候就在硬件上纠结太久。

还有一个容易被忽略的点:CPU 版和 GPU 版的代码在绝大多数情况下是同一套。你写的模型定义、训练循环、数据管道,只要不硬编码.cuda(),换到 GPU 机器上基本就是改一行device变量的事。也就是说,你现在用 CPU 版学的东西,百分之九十以上可以直接迁移到 GPU 环境,不会浪费。

1.2 三个组件各自扮演什么角色

这套组合里三个东西分工很清晰,理解了分工,后面每一步的意图就自然明白了。Python 是语言运行时,负责执行你写的所有代码,它本身只是一个解释器和标准库,不具备任何深度学习能力。PyTorch 是深度学习框架,它是一个安装到 Python 环境里的第三方库,提供了张量运算、自动求导、神经网络层、优化器这一整套工具,你可以理解成“一堆帮你实现数学运算和模型训练的代码集合”。PyCharm 是集成开发环境,它负责让你舒服地写代码、管理项目、运行调试,本质上它是在背后调用 Python 解释器来执行你的脚本,它自己不参与任何计算。

这里最容易让人困惑的是 PyCharm 和 Python 的关系。很多新手以为装了 PyCharm 就等于有了 Python,其实不是。PyCharm 只负责“管理和调用”,真正执行代码的始终是那个独立的 Python 解释器。所以你会看到后面有一个关键步骤叫“给项目绑定解释器”,本质就是告诉 PyCharm:“去用这个路径下的 Python 来跑我的代码。”没绑定对,就会出现你明明装了某个库,PyCharm 里却提示找不到的诡异情况——因为 PyCharm 用错了 Python,你装的库在另一个 Python 里。

提示:不要把 Python、PyCharm、PyTorch 三个东西的安装顺序搞混。正确顺序是 Python → PyCharm → PyTorch。PyTorch 必须装在 Python 环境里,PyCharm 只是最后用来指挥它们干活的。

2. Python 安装:版本选择和 PATH 这一步千万别踩坑

Python 是整条链路的地基,这一步没搞好,后面全白搭。我见过太多问题最后追根溯源都是 Python 装得不干净导致的:装了多个版本互相打架、PATH 没配上导致命令行里敲 python 没反应、或者用了一个太新的版本结果某些库还没适配。

2.1 到底该选哪个 Python 版本

先说结论:不要盲目追最新版,选一个当前主流、生态适配完善的稳定版本。深度学习的各个库对 Python 版本的跟进是有延迟的,某个新版本刚发布时,一些科学计算相关的包可能还没有对应的预编译 wheel,你装的时候就得现场编译,那过程能让你崩溃。我一般会选发布一年左右、社区反馈稳定的版本,这个时间点上主流库的适配基本都跟上了。

对 Windows 用户来说,安装包从 Python 官网下载即可,注意勾选那个“Add Python to PATH”的复选框,这是安装向导里最重要的一步。很多人安装时一路下一步,把这个勾选漏了,结果命令行里敲python提示“不是内部或外部命令”,然后又得手动去配环境变量,平白多走一段弯路。如果你是 macOS 用户,系统自带的是 Python 2 的老版本或者根本没有,建议用官方安装包装一个新的,别去动系统自带的那个,系统有些工具依赖它,乱动容易出问题。Linux 用户相对来说简单,大多数发行版自带 Python,但同样建议装一个独立的版本用于开发,把系统自带的和开发用的分开。

场景建议方案原因
Windows 全新机器官网安装包,勾选添加到 PATH最省事,一步到位
macOS官网安装包或包管理器安装避开系统 Python 2
Linux独立安装一个版本,不动系统的系统工具依赖自带版本

2.2 安装过程和验证方法

下载好安装包之后,Windows 上的操作流程大概是:双击运行,第一屏务必勾选“Add Python to PATH”,然后选择“Install Now”或者自定义安装路径。自定义路径的话我建议路径里不要有中文和空格,比如放在D:\Python\这种简单路径下,因为空格和中文在后续某些工具处理路径时容易出幺蛾子,这是个说不清道不明但真实存在的坑。

安装完成后,必须验证。打开命令行(Windows 上按 Win+R 输入 cmd,macOS 和 Linux 打开终端),输入两个命令来确认:

python --version pip --version

如果第一条命令能输出你安装的版本号,第二条能输出 pip 的版本号,说明 Python 装好并且 PATH 配对了。如果提示找不到命令,先别急着重装,大概率是 PATH 的问题。Windows 上可以在“系统属性 → 高级 → 环境变量”里检查用户变量和系统变量里的 Path,看有没有 Python 的安装目录和它下面的 Scripts 目录。这两个都要有,缺一个就会出现python能用但pip不能用的怪问题。

macOS 和 Linux 上如果系统里存在多个 Python,可能需要用python3和pip3来区分,这个要看你安装的时候有没有建立 python 这个软链接。我的习惯是每次都明确用python还是python3,避免歧义。

注意:如果你之前装过 Python 但卸载过,重装前建议去安装目录和用户目录下清理一下残留的pip缓存和旧的环境变量,残留是导致各种奇怪问题的常见原因。

2.3 一个小验证:确认 pip 能正常装包

Python 装好之后,顺手验证一下 pip 能不能真正装包,这样能把网络和权限问题提前暴露出来。随便装一个小而干净的包试试,比如:

pip install requests

如果进度条正常跑完、最后显示Successfully installed,说明 pip 和网络都没问题。如果卡住不动或者报连接超时,那就是网络访问源的问题,这时候可以配置一下镜像源来加速。国内常用的镜像源配置方式是在 pip 配置文件里指定,或者在命令里临时加参数:

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

这个镜像源的原理很简单:pip 默认去国外的官方仓库拉包,跨境访问不稳定,换成国内镜像就是把下载地址指到一个国内同步的仓库上,速度和成功率都会好很多。这个配置对后面的 PyTorch 安装尤其重要,因为 PyTorch 的安装包体积不小,用默认源下载经常中途断掉。

如果这一步验证通过了,Python 这块就基本稳了,可以进入下一步。

3. PyCharm 安装与解释器绑定:新手最容易败在这里

PyCharm 是 JetBrains 出品的 Python 集成开发环境,社区版免费,专业版功能更多但需要授权。对深度学习入门来说,社区版完全够用,我一直在用社区版,从来没觉得缺什么关键功能。

3.1 社区版够不够用,怎么选

先回答那个每个人都想知道的问题:社区版和专业版到底差在哪,入门要不要上专业版。简单说,专业版主要在远程开发、数据库工具、Web 框架支持、科学计算工具的深度集成这些方面多一些能力,而这些对纯写深度学习脚本的初学者来说,基本用不上。社区版支持完整的编辑、调试、运行、版本控制、虚拟环境管理功能,你要写模型、跑训练、看输出,社区版一点不虚。

所以我的建议很直接:入门就用社区版,免费、安装包小、启动也快。等你以后真的需要在远程服务器上开发、或者需要那几个专业功能了再考虑。安装过程也很简单,官网下载对应系统的安装包,双击运行,一路下一步即可。中间有一个选项问你要不要关联.py文件、要不要添加到右键菜单,建议都勾上,方便后续直接右键打开文件。

Windows 上安装路径同样建议避开中文和空格,跟 Python 一个道理。macOS 上就是拖进应用程序目录,Linux 上通常从官网下 tar.gz 解压后运行启动脚本,或者用 snap 安装。装完之后第一次启动会让你选主题、设置快捷键方案,这些按自己喜好来就行,不影响后面。

3.2 PyCharm 和 Python 的绑定,是整个环节的关键

这是我见过新手翻车最多的地方。你把项目在 PyCharm 里打开,写了一段代码,点了运行,结果报错说找不到某个库,但你刚才明明在命令行里用 pip 装过了。这种情况九成九是因为PyCharm 用的 Python 和你命令行里的 Python 不是同一个。

PyCharm 在创建项目的时候会问你要用哪个解释器,这时候一定要注意看清楚路径。我的建议是先在命令行里用下面的命令确认一下当前用的 Python 在哪:

python -c "import sys; print(sys.executable)"

这个命令会打印出当前 Python 解释器的完整路径,把这个路径记住。然后在 PyCharm 里创建项目时,选择“已存在的解释器”,手动指定到这个路径。这样就能保证命令行装好的包,PyCharm 里能直接用。

常见现象真实原因解决方向
PyCharm 里 import 报错PyCharm 用了另一个解释器检查并重新绑定解释器
命令行装包 PyCharm 看不到两者环境不一致统一到同一解释器
换了项目又报错每个项目绑定的解释器不同确认项目级解释器设置

绑定好之后,PyCharm 右下角会显示当前解释器的名字和版本,你可以点开它查看已经安装的包列表。如果能看到你之前用 pip 装的那些包,就说明绑定对了。这个习惯我建议一直保持:装完任何包,先到 PyCharm 的解释器设置里看看能不能看到它,比反复试运行要高效。

3.3 第一次配置的几个顺手设置

PyCharm 装好之后有几个设置我每次都会调,调完体验会顺畅很多。第一是字体和字号,看代码看得舒服比什么都重要;第二是自动导入,把 Python 相关的自动导入提示开上,写torch.的时候能自动补全模块;第三是把代码检查的黄绿波浪线提示调到一个合理的级别,新手容易被满屏的警告吓到,其实很多是无害的提示。

还有一个实用功能是“运行配置”。第一次运行脚本时,PyCharm 会问你要不要保存运行配置,保存之后以后点那个绿色三角就是按固定配置跑,包括工作目录、环境变量这些。工作目录这个参数有讲究:如果你的代码里用了相对路径读取数据文件,而工作目录不对,就会报文件找不到。所以养成习惯,把工作目录设成项目根目录,数据和代码都基于这个根目录来引用,能避免很多路径问题。

到这一步,你已经有了一个能写能跑 Python 的编辑器环境,接下来就是把最重要的深度学习库装进去。

4. PyTorch CPU 版安装:虚拟环境是必须的

PyTorch 的安装,我强烈建议不要直接装在全局 Python 环境里,而是给每个项目单独建一个虚拟环境。虚拟环境这个概念听起来吓人,其实就是给项目划一块独立的、只有它自己能用的库空间。这样不同项目之间用到的库版本互相隔离,不会打架。

4.1 为什么要用虚拟环境

我刚开始学的时候也觉得虚拟环境是多此一举,直接全局装多省事。结果就是:A 项目需要一个库的 1.0 版本,B 项目需要 2.0 版本,全局只有一个位置,你装了 A 的版本,B 就跑不了,来回重装能把自己折腾疯。更严重的是,当你把某个核心库升级后,可能会连带影响其他库的依赖,导致本来好好的项目突然跑不动了,而你还想不起来自己动过什么。

虚拟环境解决的正是这个问题。你为每个项目创建独立环境,项目 A 的环境里装 1.0,项目 B 的环境里装 2.0,互不干扰。删掉项目直接把环境文件夹删了就行,干净利落。对深度学习这种依赖链复杂、版本要求又比较敏感的领域来说,虚拟环境几乎算是标配。Python 自带的venv模块就够用,不需要额外装工具。

创建和激活虚拟环境的命令大概是这样:

# 在项目目录下创建虚拟环境,名字叫 venv python -m venv venv # Windows 激活 venv\Scripts\activate # macOS / Linux 激活 source venv/bin/activate

激活之后,命令行的开头会出现(venv)这样的标记,表示当前所有 pip 操作都只在这个环境里生效。这一步确认好了,后面装 PyTorch 才不会污染全局。在 PyCharm 里新建项目时也可以直接选择“新建虚拟环境”,这样编辑器会自动帮你创建并绑定,省去手动命令行的步骤,两种方式都可以,手动一遍能帮助你理解背后的机制。

4.2 安装 PyTorch 的正确姿势

现在是重头戏。PyTorch 的官网有一个安装命令生成器,你选好系统、包管理方式、Python 版本、计算平台(选 CPU),它就会给你一条现成的命令。我强烈建议从官网生成命令,不要凭记忆手写,因为它的包名和索引地址是特定格式,写错了会装到奇怪的东西或者报错。

CPU 版的安装命令大致是这个形态(具体版本号以官网当前生成为准):

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

这里解释一下这三个包的分工。torch是核心库,张量、自动求导、神经网络都在里面;torchvision是计算机视觉相关的工具包,包含常用数据集、预训练模型和图像变换工具;torchaudio是音频处理相关。入门阶段你至少需要前两个,第三个顺手一起装也不占多少事。命令最后的--index-url参数就是把安装源指向 PyTorch 官方的 CPU 包仓库,确保装的是纯 CPU 版本而不是带 CUDA 的版本。

安装过程会很慢,因为包体积不小。这时候前面配置的镜像源思路就能帮上忙,但要注意 PyTorch 的包不一定在所有国内镜像上都有 CPU 版的最新同步,所以如果镜像源里找不到或者版本对不上,就老老实实用官方源慢慢等。我个人的经验是:这种大包安装,找一个网络稳定的时间一次装完,别装一半断了再重来,中断的安装有时会留下损坏的缓存,反而更麻烦。

提示:安装完成后,用pip list看一眼,确认 torch、torchvision、torchaudio 三个都在列表里,且版本号符合预期。如果只有 torch 没有另外两个,说明命令没执行完整,补装即可。

4.3 安装后的验证,三步确认

装完不能光看命令成功就完事,一定要做验证。我习惯用三段式验证,能层层确认装的东西是否真的可用。

第一段,确认能导入并且看版本:

import torch print(torch.__version__) print(torch.cuda.is_available())

第二行会输出False,这是正常的,因为装的是 CPU 版,没有 CUDA 支持。如果这里报错说没有 cuda 模块,也别慌,CPU 版本本来就不依赖它,能正常打印版本号就说明导入成功了。

第二段,确认张量运算正常:

import torch x = torch.tensor([[1.0, 2.0], [3.0, 4.0]]) y = torch.tensor([[5.0, 6.0], [7.0, 8.0]]) print(x + y) print(torch.matmul(x, y))

能看到正确的矩阵加法和乘法结果,就说明核心运算没问题。

第三段,确认能定义一个最简单的网络并跑一次前向:

import torch import torch.nn as nn model = nn.Sequential( nn.Linear(10, 20), nn.ReLU(), nn.Linear(20, 1) ) out = model(torch.randn(4, 10)) print(out.shape)

输出形状应该是(4, 1)。这三步都通过,你的 PyTorch 环境就是真正可用的了,而不是“装上了但用不了”的状态。

5. 环境跑通验证:从张量到第一个能训练的小网络

装完只是开始,要让这套环境真正为你所用,得跑一个完整的训练流程。我一般用经典的 MNIST 手写数字识别来做这个验收,原因很实在:数据小、内置在 torchvision 里自动下载、几分钟就能跑完、还能完整覆盖数据加载、模型定义、训练、评估这条链路。

5.1 数据准备和加载器的写法

MNIST 通过 torchvision 可以一行代码加载,关键是理解DataLoader是干什么的。它负责把整个数据集按 batch 分批、随机打乱顺序、后台并行读取,让训练循环每次只处理一小批数据。对 CPU 环境来说,num_workers这个参数设置要谨慎,Windows 上设成大于 0 有时会因为多进程机制出问题,我建议先用 0,稳定了再试着调。batch size 设成 64 或者 128 都可以,CPU 上别设太大,内存和速度都吃不消。

数据下载那一步如果卡住,多半是网络问题,可以从网上找现成的数据集文件手动放到指定目录,torchvision 检测到文件已存在就不会重复下载。这个技巧在数据量大、网络不稳的时候特别有用。

5.2 一个最小可用的卷积网络

我写一个极简的 CNN,两层卷积两层全连接,结构上足够说明问题,又不会太复杂。核心要点是搞清楚每一层的输入输出维度怎么衔接:卷积层输出的是多通道的特征图,进入全连接层之前要先用flatten展平成一维向量,而展平后的维度要和全连接层的输入维度对上,这是新手最容易算错、也最容易报错的地方。如果报维度不匹配的错误,八成就是这里没对上。

训练循环里有几个固定动作:清零梯度、前向传播、计算损失、反向传播、更新参数。这五步是 PyTorch 训练的标准骨架,我从入门到现在写的大部分训练代码都是这个结构。损失函数用交叉熵,优化器用 Adam,学习率从 0.001 起步,这些都是分类任务的常规配置。

5.3 在 CPU 上的实际表现和观察

跑起来之后,你会看到每个 epoch 的耗时和 loss 变化。CPU 上第一个 epoch 会慢一些,因为要加载数据、初始化各种东西,后面会稳定下来。观察 loss 是不是在下降、准确率是不是在上升,这是判断代码写没写对的最简单标准。如果 loss 一直不动或者变成 NaN,那就要回头检查学习率是不是太大、数据处理是不是有问题。

我这里想强调一个心态问题:CPU 上训练慢,不要急着换设备,先确认你的代码逻辑是对的。环境搭建和代码正确性,跟硬件快慢是两码事。你能用 CPU 把一个小网络正确训练到收敛,就说明整条链路你都掌握了,剩下的只是速度差异。这个阶段积累的信心和方法,比省下来的那点训练时间值钱得多。

6. 常见问题排查与踩坑经验

讲完了流程,最后这部分是我觉得最有价值的地方,因为这些坑不是教程里会写的,都是我自己一次次撞出来的。

6.1 高频问题速查表

报错或现象可能原因处理方向
命令行 python 找不到PATH 没配检查环境变量里的 Python 目录和 Scripts 目录
pip 装了 PyCharm 里没有解释器不一致在 PyCharm 里重新绑定到同一个解释器
pip 安装超时失败网络源问题配置国内镜像源或换时间重试
import torch 报错装到了别的环境确认虚拟环境已激活再装、再导入
训练时报维度不匹配全连接输入维度算错打印展平后的 shape 再对应改
loss 变成 NaN学习率过大或数据未归一化降低学习率、检查输入数值范围
多进程加载卡死Windows 下 worker 机制把 num_workers 设成 0

表格里每一条我都亲身遇到过,其中解释器不一致和维度不匹配这两条,新手撞上的频率最高。解释器那条尤其隐蔽,因为你明明在命令行验证过库能用,到了编辑器里就不行,很容易怀疑人生。

6.2 几条教程不会写的经验

第一条经验关于虚拟环境。我现在的习惯是每个项目一个独立虚拟环境,绝不偷懒。早期图省事全局装,后来环境一乱,排查问题的时间比建十个虚拟环境加起来还多。建环境的成本很低,命令行一行命令,或者 PyCharm 里点几下,但这个习惯能帮你省下大量“这库怎么突然用不了了”的困惑时间。

第二条经验关于版本记录。装完环境之后,我会导出一份依赖清单:

pip freeze > requirements.txt

这个文件记录了当前环境所有包的精确版本。好处是,当你换了机器、或者把项目分享给别人,直接pip install -r requirements.txt就能复刻一个完全一样的环境,不会出现“在我这能跑在你那报错”的经典问题。养成这个习惯,对以后协同开发帮助极大。

第三条经验关于报错信息。新手看到红色报错容易慌,其实大部分报错的最后一行才是真正的关键。看报错要倒着看,先看最后一行的错误类型和信息,再往上追溯是哪一行代码触发的。把这个习惯建立起来,你自己就能解决绝大多数问题,而不是遇到报错就到处问人。

第四条经验关于学习路径。环境搭好之后,不要一头扎进复杂的项目,先找几个小的、能跑通的例子,把数据加载、模型定义、训练循环、评估这个流程反复走几遍,走到你不用查资料就能写出来的程度。深度学习这门东西,动手跑通的收益远大于看视频看教程。我见过太多人收藏了一堆教程却从没真正跑起过一个模型,而真正拉开差距的,就是那条从“环境搭好”到“亲手跑通第一个网络”的路。环境这一关你过了,后面才是真正有趣的部分。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 6:31:50

PHP 性能优化实战:从 3s 到 300ms,TaoToken 配置与接口调优全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 6:29:20

CRC校验原理与C语言实现:从串口通信到查表法实战

1. 从一次串口通信故障说起大概两年前,我负责维护一套嵌入式数据采集设备,设备通过串口与上位机通信。原本运行得好好的,某天开始频繁出现数据错乱:仪表读数偶尔会从 15.7 跳到 25.3,日志里全是奇怪的乱码,…

作者头像 李华