
简介这份资源面向刚开始接触 Python 数据分析与深度学习环境搭建的初学者及自学者针对环境中工具分散、库安装困难、IDE 与解释器对接混乱等问题提供从 Anaconda 安装、安装验证到 OpenCV、TensorFlow、Keras 等科学计算库安装再到 PyCharm 部署与编译器配置的一整套流程说明。压缩包内为 1 个 docx 文档约 4.22MB以图文混排方式记录关键界面与命令行输出便于对照操作。资源已有 6954 人学习下载说明其在环境配置类内容中具备一定的参考价值。文档中不仅给出 pip 安装与清华镜像加速的具体写法还说明了 conda list 自检方法、版本号指定方式以及在 PyCharm 中通过 Project Interpreter 添加 anaconda3 环境下 python.exe 的完整路径与操作细节可帮助读者少走弯路快速完成可用的 TensorFlow、Keras 与 OpenCV 开发环境搭建。1. 解释器指错库装得再全也白搭Anaconda PyCharm 这套配置到底在解决什么Anaconda 装完、TensorFlow 也 pip 装上了PyCharm 里一运行还是ModuleNotFoundError这种场面在编译器配置这一步出现的频率远高于“库真的没装上”。库安装这件事拆开只有三问用哪个解释器、用哪个包管理器、装进哪个环境PyCharm 的解释器配置就是回答第一问。三步里任何一步错位报错都是同一句话——找不到模块看起来像没装实际是装到别的地方去了。这份教程覆盖的就是这条最小闭环装 Anaconda、用conda list确认装成功、用pip install 库名 -i 镜像补 OpenCV/TensorFlow/Keras、装 PyCharm、把解释器指到 Anaconda 目录下的python.exe。适合刚配深度学习环境、被“装了却 import 不到”折腾过一轮的人也适合要把实验环境固化下来复现结果的从业者。2. 装完 Anaconda 先别急着写代码三个验证动作定生死安装包双击、下一步、等进度条这一步几乎没有技术含量真正决定后面顺不顺的是安装向导最后那两三个勾选框以及装完之后你用什么方式确认它真的可用了。很多人卡在“明明装完了命令行里敲 conda 提示不是内部或外部命令”本质是 PATH 没配或者终端没刷新跟装没装成功是两回事。2.1 最后一个页面的勾选框Add to PATH 到底勾不勾安装向导末尾通常会出现两个勾选项一个是安装完成后打开介绍页面/教程页勾了会拉起浏览器另一个是Add Anaconda3 to my PATH environment variable官方默认不勾并且会附一句红字警告。原文的做法是两个都取消这个选择对新手是安全的但要知道代价。不勾 PATHconda、python这些命令只在 Anaconda Prompt 这个专用终端里有效系统 CMD 和 PowerShell 里敲不出来。好处是不会顶掉机器上已有的 Python不会影响别的软件调用系统 Python。勾了 PATH任何终端都能直接敲conda但 Anaconda 的路径会排到系统 Python 前面机器上如果还有别的工具链依赖特定 Python 版本容易出玄学问题。我一般会走第一条路然后在需要的地方显式用 Anaconda Prompt或者在 PyCharm 里直接指绝对路径的python.exe。如果你的机器是干净的、只跑这一个技术栈勾上也行但记住以后排查问题的第一句话永远是“现在这个终端用的是哪个 python”。另外提醒一点安装路径不要带中文、不要带空格、不要放在需要管理员权限才能写的目录比如C:\Program Files。这不是 Anaconda 一家的毛病pip 解包、conda 建环境、编译扩展时都可能因为路径里的空格或权限失败且报错信息通常完全不指向真正原因。2.2 用 conda list 验证输出里的四列分别是什么从开始菜单找到 Anaconda3 文件夹打开 Anaconda Prompt敲# 列出当前环境里所有已安装的包能打印出内容就说明 conda 本体可用 conda list正常输出是四列Name包名、Version版本号、Build构建标识含 Python 版本和编译器信息、Channel来源仓库。能刷出几十上百行说明 conda 环境本身是好的——这比“安装成功”的弹窗可靠得多弹窗只代表安装器退出码为 0不代表包索引可用。如果这一步报“conda 不是内部或外部命令”先别重装按顺序查三件事# 1. 看 conda 的安装信息base environment 路径、python 版本、平台 conda info # 2. 看当前终端实际调用的是哪个 pythonWindows 用 wheremacOS/Linux 用 which where python # 3. 直接问解释器自己它认为自己的可执行文件在哪 python -c import sys; print(sys.executable)conda info里重点看base environment那一行的路径是不是你安装时选的目录以及python version是否符合预期。where python会按 PATH 顺序列出所有命中项第一条就是当前生效的那个——如果第一条指向C:\Users\xxx\AppData\Local\Programs\Python\Python39\python.exe而不是 Anaconda 目录那你后面所有pip install都装到系统 Python 里去了这就是后面第 5 章要展开的经典翻车点。sys.executable这条命令看着简单实际是排查环境问题最高性价比的一招不管 IDE、终端、Jupyter 还是别人的脚本只要能让它跑一行代码就能问出它到底用的是哪个解释器。2.3 base 环境不要当垃圾场先建独立环境再装库装完就往 base 里堆 TensorFlow、Keras、OpenCV是所有新手教程的通病也是后期最难收拾的局面。base 环境里有一堆 conda 自带的依赖比如特定版本的 numpy、protobuf你pip install一个老版本深度学习框架pip 为了满足依赖会把 numpy 降级降完之后 conda 自己的某些工具就坏了报错指向一个你从没碰过的包。正确姿势是一开始就分环境。TensorFlow 1.x 这类老框架对 Python 版本卡得很死更要单独开一个# 建一个名为 py37 的环境指定 Python 3.7TensorFlow 1.13.x 支持的版本区间 conda create -n py37 python3.7 -y # 激活它后续所有 pip/conda 安装都只影响这个环境 conda activate py37 # 确认激活生效输出的路径应该包含 envs\py37 python -c import sys; print(sys.executable)-n py37是环境名随便起但建议带上版本号方便识别python3.7是版本约束conda 会去仓库里找满足约束的最新 3.7.x-y跳过确认。激活后命令行提示符前面会出现(py37)这是最直观的环境标识看不到这个前缀就说明没激活成功后面装什么都白搭。建环境这一步多花两分钟换来的是后面出问题时可以一句conda env remove -n py37推倒重来而不是在 base 里跟几十个互相冲突的依赖搏斗。血泪经验能重建的环境才叫环境不能重建的只能叫遗产。3. 库安装pip 与 conda 的分工、镜像源和版本锁装库这块最容易出现的误解是“pip 和 conda 随便用哪个都行”。两者管的层次不一样混用会导致依赖树被悄悄改写另一个高频问题是下载慢、超时加不加镜像源差别是十分钟和十秒钟的区别。这一章把这三件事拆开讲清楚谁装什么、从哪下、装哪个版本。3.1 pip 和 conda 的边界什么时候用哪个维度pipconda包来源PyPIAnaconda 官方仓库、conda-forge 等依赖解析范围只处理 Python 层依赖Python 包 非 Python 二进制依赖如 MKL、编译好的 CUDA 运行库目标环境装进当前激活环境的 site-packages可用-n 环境名直接指定不必先激活优势场景新包、小众包、框架官方推荐 pip 安装的包科学计算栈、需要预编译二进制的包典型风险覆盖 conda 装好的二进制包导致底层库版本错配仓库里没有最新版或某些包只有 pip 版本原文全程用 pip这对 TensorFlow、Keras、opencv-python 这三个包是对的——它们的官方安装指引优先 pipconda 仓库里的版本往往滞后。但要记住一条铁律同一个环境里不要用 pip 去覆盖一个已经由 conda 安装的包。判断方法很简单装之前先查# 查某个包是 conda 装的还是 pip 装的Channel 列显示 pypi 的就是 pip 装的 conda list numpy # 只列 pip 安装的包用来确认环境里有没有 pip 留下的“历史遗留” pip list如果conda list numpy的 Channel 列是空的或显示defaults/conda-forge说明这个 numpy 是 conda 装的此时再pip install numpy某版本就会把它替换掉conda 记录的依赖关系随即失真。真需要降级优先conda install numpy1.16让 conda 自己算依赖。3.2 镜像源临时 -i 与永久配置两种写法原文用的是临时指定pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple。-i是--index-url的缩写作用是把本次安装的包索引地址换成镜像站请求走镜像、不走 PyPI 官方源。这个写法适合一次性安装缺点是每条命令都得带。# 临时指定镜像源安装 OpenCV 的 Python 绑定 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple # 装指定版本用 锁死版本号避免装到不兼容的新版 pip install tensorflow1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple第一条命令里opencv-python是包名注意它和import cv2的名字不一致这是新手最常困惑的点之一第二条里tensorflow1.13.1的是精确匹配用会装到最新版行为差异巨大。镜像地址只是加速手段不影响包的完整性校验但如果你在内网或对来源有要求换成单位内网源即可。要长期用就把它写成配置之后所有 pip 命令自动走镜像# 写入用户级 pip 配置Windows 落在 %APPDATA%\pip\pip.iniLinux/macOS 落在 ~/.config/pip/pip.conf pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 顺便把超时时间调大大包如 tensorflow在内网环境下容易卡在最后几 MB pip config set global.timeout 120 # 验证配置是否写入成功 pip config listglobal.index-url影响当前用户的所有 pip 调用优先级低于命令行-i所以临时命令依然可以覆盖它。global.timeout单位是秒默认 15 秒装几百 MB 的框架时经常不够。测试连通性可以用pip install --dry-run或者干脆装一个小包试试。3.3 版本锁定tensorflow1.13.1 背后的兼容矩阵原教程明确给了tensorflow1.13.1这个版本不是随便挑的TensorFlow 1.13 系列官方支持 Python 3.5–3.7装在 3.8 及以上会直接报找不到匹配的发行版wheel或者更糟——装上了但 import 时报 DLL 加载失败。所以版本锁定的第一层不是框架本身而是 Python 解释器版本这就是 2.3 节要先建py37环境的原因。第二层是框架的间接依赖。这类老框架对 numpy、protobuf、h5py 的版本区间很窄而 pip 默认会拉最新版装完 import 时抛一堆FutureWarning甚至AttributeError。稳妥做法是先钉住几个关键依赖再装框架# 先钉 numpy 到 1.x 的老版本区间避免 pip 拉最新的 2.x 导致二进制接口不兼容 pip install numpy1.17 -i https://pypi.tuna.tsinghua.edu.cn/simple # 再装框架本体此时 pip 会复用已装好的 numpy不会二次覆盖 pip install tensorflow1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple # Keras 作为高层 API版本要和 TensorFlow 对齐2.2.4 对应 TF 1.13 系列 pip install keras2.2.4 -i https://pypi.tuna.tsinghua.edu.cn/simplenumpy1.17加引号是为了防止 shell 把当成重定向符号Windows CMD 下尤其要注意。Keras 版本和 TensorFlow 版本有对应关系混搭会出现AttributeError: module tensorflow has no attribute ...这类看着莫名其妙的报错装之前查一下官方兼容表比出事后再查省时间。如果是全新项目、不依赖老代码那就别碰 1.x直接上新版本Python 3.10/3.11 配当前稳定版 TensorFlow省掉一大半兼容性折腾。版本锁定的意义是复现不是越老越好。3.4 装完必须验import 一行比 Successfully installed 可靠Successfully installed只代表 wheel 解包完成不代表能 import。二进制包OpenCV、TensorFlow 都算在 import 时才真正加载动态库缺 DLL、ABI 不匹配、依赖版本冲突全在这一刻暴露。所以每装完一个包立刻验一次# 逐个验证并打印版本号能打印出版本号才算真装好 python -c import cv2; print(opencv, cv2.__version__) python -c import tensorflow as tf; print(tf, tf.__version__) python -c import keras; print(keras, keras.__version__) # 确认这三个包都落在当前激活环境的 site-packages 里而不是系统 Python pip show opencv-python tensorflow keraspip show的输出里有两个字段值得盯Version和Location。Location应该指向...\envs\py37\Lib\site-packages如果指向了C:\Users\...\AppData\Roaming\Python或别的路径说明虽然 import 成功但装错了地方换环境后会立刻失效。import tensorflow的输出里如果夹着大量FutureWarning、DeprecationWarning通常不影响使用但出现DLL load failed或ImportError: cannot import name ...就是真问题往下看第 5 章。4. PyCharm 里指定解释器从 Settings 到 python.exe 的完整路径PyCharm 安装本身没什么可讲的一路默认、最后点 Finish 就行首次启动的初始化配置主题、插件推荐按提示走完。真正决定能不能干活的是下一步把项目解释器指到 Anaconda 环境里的python.exe。没配之前PyCharm 用的是它自己或者系统里的 Python你在 Anaconda 里装的几十个库它一个都看不见。4.1 三层界面结构Project Interpreter、Show All、Add打开File → SettingsmacOS 是PyCharm → Preferences左侧找到Project: 项目名 → Python Interpreter。这个页面分三块上方是当前解释器的路径下拉框中间是已安装包的列表右侧有齿轮图标和号。原教程描述的“点齿轮 → Show All → 点 号”就是这里。为什么要绕一圈 Show All因为在多环境场景下下拉框里往往已经列了一堆历史解释器直接点添加的可能是“新建虚拟环境”而不是“使用已有环境”。走 Show All 能看清当前项目已经关联了哪些解释器避免重复添加同一个路径。界面路径记不住没关系记住逻辑这个页面的唯一使命是告诉 PyCharm“去哪个目录找 python.exe”。后面所有的代码补全、包列表、运行配置都跟着这个路径走。4.2 Conda Environment 与 System Interpreter两种加法的区别点开添加窗口后左侧会列出几种类型最常用的是这两种Conda EnvironmentPyCharm 需要你额外指定 conda 可执行文件的位置好处是它会在包管理面板里识别出 conda后续装包可以直接在 IDE 里操作也能显示环境名。System Interpreter只填python.exe的绝对路径PyCharm 不管这个解释器是谁建的用起来更轻配置项少。我一般选Conda Environment加 “Existing environment”路径填到环境目录下的python.exeWindows: C:\Users\用户名\anaconda3\envs\py37\python.exe macOS: /Users/用户名/opt/anaconda3/envs/py37/bin/python Linux: /home/用户名/anaconda3/envs/py37/bin/python注意不要选成anaconda3\python.exe那是 base 环境也不要选成anaconda3\envs\py37\Scripts\python.exe那里放的是脚本不是解释器本体。判断方法选完之后看 PyCharm 包列表里有没有你刚装的 tensorflow、opencv-python有就对了。一个项目一个解释器不要图省事让所有项目共用 base。PyCharm 的解释器是项目级配置同一个 IDE 窗口里不同项目可以指向不同环境这正是它比“全局改环境变量”靠谱的地方。4.3 验证配置生效让解释器自报家门配完别急着写业务代码先跑一个三行的自检脚本把解释器路径和关键库版本一次性打出来import sys # 打印当前解释器的绝对路径必须和 Anaconda 环境目录下的 python.exe 完全一致 print(executable:, sys.executable) # 打印版本确认是环境里那个 Python而不是系统自带的 print(python:, sys.version) # 逐个导入目标库导入失败会在这里直接抛异常比在业务代码里炸好定位 import cv2 import tensorflow as tf import keras print(opencv:, cv2.__version__) print(tensorflow:, tf.__version__) print(keras:, keras.__version__)sys.executable是这套自检的核心它不撒谎路径里出现envs\py37说明解释器指对了如果打印出来是C:\Users\...\AppData\Local\Programs\Python\...那说明 Settings 里根本没生效回去检查是不是改错了项目、或者点完 OK 又点成了 Cancel。另外两个辅助判断点PyCharm 右下角状态栏会显示当前解释器名配置成功的话应该能看到类似Python 3.7 (py37)Settings 的包列表里应该能直接看到 tensorflow 及其版本号。两处都对上才算配置完成。如果sys.executable对了但 import 还是失败那就不是 IDE 的问题回到第 5 章按现象排查。5. 避坑与排查五条按「现象 → 原因 → 解决」复盘这一章的五条都是同一个根因的不同变体——你以为在操作 A 环境实际在操作 B 环境。每条的排查动作都很短难的是知道该往哪看。5.1 安装期与激活期的三个坑坑一conda 命令找不到现象Anaconda Prompt 里一切正常换到 CMD 或 PowerShell 敲conda就提示“不是内部或外部命令”。原因安装时没勾Add to PATH或者勾了但终端没重启conda 的路径没进当前会话的环境变量。解决优先用 Anaconda Prompt必须在别的终端用就手动进anaconda3\Scripts目录执行activate或者临时set PATH%PATH%;C:\Users\用户名\anaconda3\Scripts。别为了省事去改系统环境变量改完容易影响机器上其他 Python 工具。坑二激活了环境但装到了 base现象conda activate py37执行了pip install也显示成功但新开一个终端conda list里找不到这个包。原因激活失败但没报错或者 pip 本身被指向了别的解释器比如系统里装过独立的 Pythonpip命令对应的是它。解决装之前先跑python -c import sys; print(sys.executable)确认路径里带envs\py37更保险的是直接用python -m pip install 包名强制用当前解释器自带的 pip绕开 PATH 里那个来路不明的 pip。坑三中文路径或空格导致安装中断现象pip 下载完成后解包阶段报PermissionError或路径相关的OSError重试多次都在同一位置失败。原因Anaconda 安装在带空格或中文的目录下部分包的安装脚本对路径处理不严谨或者目录权限不足pip 缓存目录不可写。解决换到纯英文无空格路径重装 Anaconda比如D:\anaconda3这一步没有捷径。临时绕过可以加--no-cache-dir跳过缓存但要根治还是得挪目录。5.2 运行期 import 失败的两条线坑四conda list 里有PyCharm 里 import 不到现象Anaconda Prompt 里python -c import tensorflow正常PyCharm 里同一个文件跑起来报ModuleNotFoundError。原因IDE 的解释器和终端里的不是同一个。终端在py37环境PyCharm 还指着 base 或系统 Python。解决按 4.3 节跑自检脚本比对sys.executable。九成情况是当初配解释器时选成了anaconda3\python.exebase改成envs\py37\python.exe即可。改完记得重启运行配置PyCharm 有些缓存不会立刻刷新。坑五装上了但 import 报 DLL load failed现象pip install tensorflow1.13.1显示成功import tensorflow抛ImportError: DLL load failed while importing ...。原因Python 版本不匹配在 3.8 里装了只支持 3.7 的 wheel或者 numpy、protobuf 被其他包升到了不兼容的大版本。解决先确认 Python 版本在框架支持区间内这一步不对后面全白搭版本对了就按 3.3 节把 numpy 钉回1.17再重装框架。还不行就pip install --force-reinstall --no-deps tensorflow1.13.1跳过依赖解析强制重装然后再单独补齐缺失的依赖——--no-deps是后悔药只在明确知道缺什么的时候用。6. 进阶把环境写成文件别让配置只活在脑子里配好一套能跑的环境之后最该做的一件事是把它导出成文本。理由很实在环境会坏机器会换同事要复现。我在吃过一次“本地能跑、换台机器装三天”的亏之后现在每个项目根目录必放一份环境描述文件。6.1 conda env export 与 pip freeze 的取舍两个命令都能导出依赖但粒度不同。conda env export environment.yml会把 conda 装的包连同 channel、build 号一起写进去跨平台还原最准但文件里可能混着上百个间接依赖pip freeze requirements.txt只记 pip 装的包和精确版本干净但不管非 Python 依赖。# 导出完整环境含 conda 管理的底层依赖适合内部复现 conda env export -n py37 environment.yml # 只导出 pip 层依赖适合给 CI 或 Docker 用文件更小更可控 pip freeze requirements.txt # 从文件还原先建环境再装依赖 conda env create -f environment.yml-n py37指定导出的环境名不指定就是当前激活的那个。还原时conda env create -f会按 yml 里的名字新建环境如果同名已存在会报错先conda env remove -n 旧名再建。我的习惯是两份都留environment.yml给内部同事一键还原requirements.txt给部署侧并且在后者里手动删掉tensorflow之外那些被顺带装上的gast、astor之类——它们由框架自己管钉死反而容易冲突。6.2 一个最小体检脚本环境配好之后我把 4.3 节那段自检固化成了一个check_env.py每次换机器、换解释器、升级依赖之后都跑一遍输出解释器路径、版本和关键库版本。它的价值不在于代码多高级而在于把“我感觉配好了”变成“我确认配好了”。真出问题时这个脚本的输出就是最好的排查起点路径不对说明解释器选错版本不对说明装错环境导入失败说明依赖冲突——三种情况对应三种完全不同的修法比对着报错猜快得多。从那以后我每次新建项目第一件事不是写main.py而是先把解释器路径、sys.executable和关键库版本验一遍跑通再动手。这套动作花不到两分钟能省掉后面几个小时的“明明装了却 import 不到”。希望帮到你。本文还有配套的精品资源点击获取