从 “No module named ‘tensorflow‘” 说起:深度学习环境配置的正确打开方式
摘要:当运行CNN项目代码时出现"ModuleNotFoundError: No module named 'tensorflow'"报错,通常是因为TensorFlow未安装或在错误的环境中运行。建议使用虚拟环境(venv或conda)管理项目依赖,避免全局安装导致版本冲突。具体步骤包括:创建虚拟环境、激活环境、安装所需依赖包。使用虚拟环境能有效解决不同项目间的依赖冲突问题,
在一个天气晴朗的早晨,你心情愉悦,梳理完CNN项目代码心情更好了,准备训练试试看
然后你拖动鼠标,点了运行pycharm的绿色小图标,满怀期待地看着终端.....
终端弹出了:
不妙,报错了!
不慌,仔细看看什么报错
→ No module named 'tensorflow
为什么会提示 “No module named 'tensorflow'” ?
这个错误一般有两种可能:
1. 当前环境中确实没有安装 TensorFlow;
2. 已经安装了 TensorFlow,但运行代码时使用的不是那个环境。
第二种情况更常见。比如,你在A环境装了 TensorFlow,却在B环境里运行代码。
B 自然会说:“我没这个库”。
很多小白和像我一样,可能看到这个报错的第一反应是直接
pip install tensorflow
虽然能装上,但是我们得斟酌一下:
还记得小咸鱼在本文开头放的截图吗?
同时框住了报错和虚拟环境env
我们需要考虑环境
→全局环境or特定的虚拟环境
如果直接在终端pip install tensorflow(全局环境),可能会引起环境污染,后续问题会越来越多
什么是环境污染
环境污染就是不同项目互相干扰,版本冲突、包混乱、调试地狱。直观来说就是运行的环境很不整洁,不同项目需要的包乱七八糟的rua到了一起,就像书桌上堆满了书、试卷、笔,但是我们可以分类,把书放到书架上、试卷放到文件夹里、笔放进笔袋,这样就整洁很多。
解决办法很简单——用虚拟环境。
三、创建并使用虚拟环境(venv)
虚拟环境相当于一个独立的 Python 空间,你可以在里面自由安装库,而不会影响系统或其他项目,那么怎么创建和使用呢,只需3步:
Step 1:创建虚拟环境
进入项目目录,执行以下命令(环境名可自定义):
# Windows
python -m venv cnn-env
# macOS / Linux
python3 -m venv cnn-env
这会在当前目录下生成一个名为 cnn-env 的文件夹。
Step 2:激活虚拟环境
根据操作系统不同,激活方式略有区别:
# Windows(CMD)
cnn-env\Scripts\activate
# Windows(PowerShell)
Set-ExecutionPolicy RemoteSigned
.\cnn-env\Scripts\Activate.ps1
# macOS / Linux
source cnn-env/bin/activate
Step 3:安装依赖
在激活的环境中安装所需库:
# TensorFlow(CPU 版本)
pip install tensorflow
# GPU 版本(需提前安装 CUDA 和 cuDNN)
pip install tensorflow-gpu
# 其他常用库
pip install numpy opencv-python matplotlib
安装完成后,就可以正常运行 CNN 代码啦!
四、好学的小咸鱼会问了
1. 每次都要激活吗?
是的。
每次打开终端运行项目前,都要激活对应的环境。
否则 Python 会回到全局环境,出现“模块不存在”的报错。
温馨提示:可以在项目根目录创建一个 activate.bat(Windows)或 activate.sh(macOS/Linux)脚本,内容只写一行:
.\cnn-env\Scripts\Activate
以后双击即可快速激活。
2. 每个项目都要单独建环境吗?
不一定。
如果多个项目依赖完全一致,可以共用同一个环境;
如果依赖版本不同(例如一个用 PyTorch,一个用 TensorFlow),
建议分开,避免冲突。
3. 想更方便地管理环境怎么办?
如果你有多个深度学习项目,建议使用 conda 来统一管理。
它比 venv 功能更强,尤其适合需要 GPU 的场景。
常用命令如下:
# 创建环境
conda create -n cnn-env python=3.9
# 激活环境
conda activate cnn-env
# 安装依赖
conda install tensorflow-gpu
pip install opencv-python
查看所有环境:
conda env list
删除不用的环境:
conda remove -n cnn-env --all
4. 怎么确认当前使用的环境是哪个环境呢?
在终端输入:
where python # Windows
which python # macOS / Linux
如果输出路径中包含你的虚拟环境名称(例如 cnn-env\Scripts\python.exe),
就说明当前正在使用正确的环境。
5. 查找所有可能的虚拟环境文件夹的通用搜索有哪些?
虚拟环境的核心特征是包含 python.exe 和 pip.exe(通常在 Scripts 子文件夹中),可通过搜索这些文件定位:
PowerShell 中搜索所有虚拟环境的 python.exe
# 搜索 C 盘所有包含 Scripts\python.exe 的路径(虚拟环境特征)
Get-ChildItem -Path C:\ -Recurse -Filter "python.exe" -ErrorAction SilentlyContinue | Where-Object { $_.DirectoryName -like "*\Scripts" } | Select-Object DirectoryName
解释:虚拟环境的 python.exe 通常在 xxx\Scripts\ 目录下(如 D:\project\venv\Scripts\python.exe),上述命令会筛选出这类路径,DirectoryName 就是虚拟环境的 Scripts 父目录(即虚拟环境根目录)。
搜索常见虚拟环境文件夹名
虚拟环境常用 venv、env、.venv 作为文件夹名,可直接搜索:
# 搜索 C 盘所有名为 venv、env、.venv 的文件夹
Get-ChildItem -Path C:\ -Recurse -Directory -Include venv, env, .venv -ErrorAction SilentlyContinue | Select-Object FullName
三、注意事项
五、学习总结
最后献上环境修炼秘籍一份~
| 阶段 | 要做的事 |
|---|---|
| 入门期 | 保持环境整洁,先建虚拟环境 |
| 成长期 | 用 venv 管理小项目,用 conda 管理大工程 |
| 稳定期 | pip freeze > requirements.txt 固化依赖 |
| 清理期 | 定期删除旧环境,保持电脑干净清爽 |
以上便是篇文章的所有内容啦!
相信友友们下一次再看到 “No module named 'tensorflow'”,只需要轻轻一笑,因为你知道该怎么做了,甚至熟练掌握环境修炼秘籍(帅就一个字)
欢迎友友们交流讨论
如果看完觉得还不错,欢迎点赞转发哈哈哈哈~
更多推荐



所有评论(0)