Anaconda虚拟环境下的PyCharm使用Tensorflow调用GPU出现dll文件缺失的问题和解决办法

Tensorflow GPU环境配置之坑爹历程
博主在安装Tensorflow GPU版时遇到各种问题,包括CUDA和CUDNN版本匹配、环境变量设置等。尝试多种方法无果后,通过Anaconda创建虚拟环境解决了问题。但在PyCharm中运行时出现dll文件缺失错误。经过分析,发现是PyCharm的环境PATH不完整。解决方法是确保PyCharm使用完整路径启动,最终成功运行Tensorflow并检测到GPU。博客强调理解问题本质和环境配置的重要性,而非盲目寻找dll文件。
部署运行你感兴趣的模型镜像

由于最近要跑神经网络,因此需要安装tensorflow,然后百度上面搜了一大堆,尝试了很多很多方法, 先是下对应的CUDA和CUDNN,版本号也和tensorflow对上了,各种环境变量和奇奇怪怪的东西折腾了半天,尼玛的GPU版本的还是报错!!!

之后使用北大教程里面Anaconda虚拟环境的方法,直接在虚拟环境中安装相应版本的python,CUDA,cudnn,tensorflow,

北大教程:https://www.bilibili.com/video/BV1B7411L7Qt

最后在Anaconda Prompt中成功调用GPU,他妈的当时可把老子激动坏了,心想终于可以开始跑我的神经网络了
在这里插入图片描述
后面我到PyCharm使用这个虚拟环境,结果他妈比的又开始报错了,各种dll文件缺失。

就比如这种:Could not load dynamic library ‘cudart64_101.dll‘; dlerror: cudart64_101.dll not found

然后我就搜网上的方法,大部分都是缺啥找啥,然后我就把各个dll文件找过来再放进,尼玛的,折腾了半天还是没有用。

最后我静下心来仔细思考了下,既然在Anaconda Prompt是可以的,同一个虚拟环境为什么在PyCharm就不行呢?

于是我就开始检查PyCharm里面运行的tensorflow是不是我虚拟环境里面配的(因为我之前可能装了好几个,说不定混了),结果发现,问题不在这

import tensorflow as tf
print(tf.__version__)
print(tf.__path__)

在这里插入图片描述
这就说明虚拟环境是对的,然后我又是找啊找,最后找到这篇文章,尼玛的,还真成功了!!!!

https://zhuanlan.zhihu.com/p/72615307

实际上就是路径的问题,这位大佬属实牛逼,问题就出在path上面,PyCharm找到的虚拟环境是不完整的,如这位大佬所说,PyCharm中PATH的值会莫名缺失Anaconda下相应虚拟环境的PATH相关值。如果你根据大佬的方法在Anaconda Prompt打开PyCharm没有报错,那么就是这个问题。
在这里插入图片描述
打开后运行测试代码

import tensorflow as tf
print(tf.__version__)
print(tf.test.is_gpu_available())

在这里插入图片描述
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,折腾了一天总算成功了。

总结:个人感觉,网上那种缺dll文件就下载补上去的方法有的时候可以,有的时候不行,但终究是指标不治本,不是解决问题的根本办法。有的时候,要带着思考去搜问题,最好要懂为什么要这么做,要不然感觉会白白浪费很多时间。比如什么是环境变量,为什么要配环境变量,32位和64位的区别,这些常识性问题一定要懂。 感觉只有在这样的思维模式下训练,DeBug解决问题的能力才会越来越强,要不然永远只是一个只会搜csdn的入门学生。。。

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think> 我们已知用户在Windows系统上,且已安装CUDA 12.6(或更高版本)。但是TensorFlow 2.20官方版本要求CUDA 11.x,因此我们需要在PyCharm中创建一个虚拟环境,并在该环境中安装适配的CUDA工具包(通过conda)TensorFlow 2.20。 步骤: 1. 创建并激活一个新的conda环境(推荐使用Python 3.9,因为TensorFlow 2.20支持Python 3.9)。 2. 在该环境中安装CUDA 11.8cuDNN 8.6(根据TensorFlow官方文档[^1]),因为TensorFlow 2.20需要CUDA 11.8cuDNN 8.6。 3. 安装TensorFlow 2.20。 4.PyCharm中配置该项目使用此conda环境。 具体步骤: ### 步骤1:创建conda环境 打开Anaconda Prompt(或命令提示符)并执行: ```bash conda create -n tf_2.20 python=3.9 -y conda activate tf_2.20 ``` ### 步骤2:安装CUDA 11.8cuDNN 8.6 在TensorFlow官方构建说明[^1]中,TensorFlow 2.20需要CUDA 11.8cuDNN 8.6。我们可以通过conda安装: ```bash conda install -c conda-forge cudatoolkit=11.8.0 cudnn=8.6.0 -y ``` ### 步骤3:安装TensorFlow 2.20 ```bash pip install tensorflow==2.20.0 ``` ### 步骤4:配置PyCharm 1. 打开PyCharm,打开或创建项目。 2. 进入设置:`File` > `Settings` > `Project: <项目名>` > `Python Interpreter`。 3. 点击齿轮图标 > `Add...` > `Conda Environment` > `Existing environment`。 4. 在`Interpreter`右侧点击`...`,然后找到conda环境目录(通常在`C:\Users\<用户名>\anaconda3\envs\tf_2.20\python.exe`)。 5. 点击`OK`,等待PyCharm索引环境。 ### 步骤5:验证GPU是否可用 在PyCharm中创建一个Python文件,输入以下代码: ```python import tensorflow as tf print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU'))) print(tf.__version__) ``` 运行后应输出: ``` Num GPUs Available: 1 2.20.0 ``` ### 注意事项 1. 确保系统NVIDIA驱动支持CUDA 11.8(驱动版本要求>=450.80.02,但推荐使用最新驱动以同时支持CUDA 12.6CUDA 11.8)。 2. 如果出现找不到GPU的情况,请检查: - Conda环境中是否正确安装了cudatoolkitcudnn? - 系统驱动是否支持CUDA 11.8?可以通过`nvidia-smi`查看驱动版本,并对照NVIDIA官网的CUDA驱动兼容性表格。 ### 常见问题 **问题:安装TensorFlow 2.20后,运行代码提示找不到cudart64_110.dll?** 这是因为系统环境变量中可能没有包含conda环境中的CUDA库。可以通过在代码开头添加以下代码临时解决: ```python import os os.add_dll_directory("C:/Users/<用户名>/anaconda3/envs/tf_2.20/Library/bin") # 替换为你的conda环境路径 ``` 或者,在设置系统环境变量(临时): 在激活conda环境后,将conda环境的Library/bin目录添加到PATH: ```bash set PATH=C:\Users\<用户名>\anaconda3\envs\tf_2.20\Library\bin;%PATH% ``` ### 引用说明 根据TensorFlow官方文档[^1],TensorFlow 2.20需要以下依赖: - Python 3.7-3.10 - CUDA 11.8 - cuDNN 8.6 因此我们选择Python 3.9CUDA 11.8、cuDNN 8.6进行安装。 --- §§相关问题§§ 1. 如何确认TensorFlow是否正在使用GPU? 2. 如何升级TensorFlow到最新版本? 3. 在Windows系统中,如何管理多个不同版本的TensorFlow项目? </think> ### Windows系统下在PyCharm调用TensorFlow 2.20使用GPU的配置方法 以下是详细的操作步骤,基于TensorFlow官方版本兼容性要求[^1]: #### 📋 预先准备工作 1. **验证系统环境**: - 确保Windows 10/11系统 - NVIDIA显卡驱动 ≥ 526.98(支持CUDA 11.8) - 安装[Visual Studio 2019](https://visualstudio.microsoft.com/)(需要C++构建工具) 2. **安装Anaconda**: ```bash choco install anaconda3 -y # 使用Chocolatey快速安装 ``` #### 配置步骤 **步骤1:创建专用虚拟环境** ```bash conda create -n tf2.20 python=3.9 -y # TensorFlow 2.20需Python 3.7-3.10[^1] conda activate tf2.20 ``` **步骤2:安装CUDA 11.8cuDNN 8.6** ```bash conda install -c conda-forge cudatoolkit=11.8.0 cudnn=8.6.0 -y ``` **步骤3:安装TensorFlow 2.20** ```bash pip install tensorflow==2.20.0 ``` **步骤4:PyCharm环境配置** 1. 打开PyCharm创建新项目 2. 进入 `File > Settings > Project: <项目名> > Python Interpreter` 3. 点击齿轮图标选择 `Add Interpreter > Conda Environment` 4. 选择 `Existing environment` 并定位到: ``` C:\Users\<用户名>\anaconda3\envs\tf2.20\python.exe ``` #### ✅ 验证GPU加速 创建测试文件 `gpu_test.py`: ```python import tensorflow as tf # 验证GPU可用性 print(f"TensorFlow 版本: {tf.__version__}") print(f"GPU 设备列表: {tf.config.list_physical_devices('GPU')}") # 性能测试 with tf.device('/GPU:0'): a = tf.random.normal([10000, 10000]) b = tf.random.normal([10000, 10000]) c = tf.matmul(a, b) print(f"矩阵乘法完成! 结果形状: {c.shape}") ``` 预期输出: ``` TensorFlow 版本: 2.20.0 GPU 设备列表: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] 矩阵乘法完成! 结果形状: (10000, 10000) ``` #### ️ 常见问题解决 1. **DLL加载失败错误**: ```python # 在代码开头添加路径修复 import os os.add_dll_directory("C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin") ``` 2. **cuDNN版本不匹配**: ```bash conda install cudnn=8.6.0 --force-reinstall ``` 3. **GPU内存不足**: ```python # 在代码开头添加 gpus = tf.config.experimental.list_physical_devices('GPU') tf.config.experimental.set_memory_growth(gpus[0], True) ``` #### 💻 性能优化建议 1.PyCharm运行配置中添加环境变量: ``` Name: TF_FORCE_GPU_ALLOW_GROWTH Value: true ``` 2. 启用XLA加速: ```python tf.config.optimizer.set_jit(True) ``` 3. 使用混合精度训练: ```python tf.keras.mixed_precision.set_global_policy('mixed_float16') ``` > 📌 **注意**:TensorFlow 2.20要求严格匹配CUDA 11.8 + cuDNN 8.6[^1]。系统驱动需同时支持CUDA 11.8(用于TensorFlowCUDA 12.x(用于其他应用) ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值