前言

我在下载动手学深度学习中的d2l包时,遇到了以下问题,我把解决方法写在下面,大家如果碰到了类似问题可以参考一下。

第一个-pandas兼容问题

missing.c
      "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:E:\anaconda\envs\dmt\libs /LIBPATH:E:\anaconda\envs\dmt /LIBPATH:E:\anaconda\envs\dmt\PCbuild\amd64 "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\ATLMFC\lib\x64" "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" /EXPORT:PyInit_missing build\temp.win-amd64-cpython-310\Release\pandas\_libs\missing.obj /OUT:build\lib.win-amd64-cpython-310\pandas\_libs\missing.cp310-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-310\Release\pandas\_libs\missing.cp310-win_amd64.lib
        正在创建库 build\temp.win-amd64-cpython-310\Release\pandas\_libs\missing.cp310-win_amd64.lib 和对象 build\temp.win-amd64-cpython-310\Release\pandas\_libs\missing.cp310-win_amd64.exp
      正在生成代码
      已完成代码的生成
      building 'pandas._libs.parsers' extension
      "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DNPY_NO_DEPRECATED_API=0 -I.\pandas\_libs -Ipandas/_libs/src/klib -Ipandas/_libs/src -IC:\Users\Lenovo\AppData\Local\Temp\pip-build-env-t44h32jh\overlay\Lib\site-packages\numpy\_core\include -IE:\anaconda\envs\dmt\include -IE:\anaconda\envs\dmt\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /Tcpandas/_libs/src/parser/io.c /Fobuild\temp.win-amd64-cpython-310\Release\pandas\_libs\src\parser\io.obj
      io.c
      pandas/_libs/src/parser/io.c(139): error C2065: “ssize_t”: 未声明的标识符
      pandas/_libs/src/parser/io.c(139): error C2146: 语法错误: 缺少“;”(在标识符“rv”的前面)
      pandas/_libs/src/parser/io.c(139): error C2065: “rv”: 未声明的标识符
      pandas/_libs/src/parser/io.c(145): error C2065: “rv”: 未声明的标识符
      pandas/_libs/src/parser/io.c(145): warning C4267: “函数”: 从“size_t”转换到“unsigned int”,可能丢失数据   
      pandas/_libs/src/parser/io.c(146): error C2065: “rv”: 未声明的标识符
      pandas/_libs/src/parser/io.c(157): error C2065: “rv”: 未声明的标识符
      pandas/_libs/src/parser/io.c(158): error C2065: “rv”: 未声明的标识符
      error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pandas
Failed to build pandas
ERROR: Failed to build installable wheels for some pyproject.toml based projects (pandas)

问题

从日志来看,核心错误是编译 pandas._libs.parsers 时出现 ssize_t未声明的问题,这是 Windows 环境下编译 pandas 常见的兼容性问题。ssize_t 是 POSIX 标准中的类型,Windows 环境下需要特殊处理。

解决

我搜索后先是使用conda安装pandas,因为conda 会自动下载适配 Windows 的预编译版本,无需编译,避免所有环境问题。但是并没有奏效。然后尝试安装稍旧的稳定版本,问题就解决了。

pip install pandas==1.5.3  # 选择一个兼容的旧版本

第二个,numpy和scipy兼容问题

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
chex 0.1.89 requires numpy>=1.24.1, but you have numpy 1.23.5 which is incompatible.
jax 0.5.2 requires numpy>=1.25, but you have numpy 1.23.5 which is incompatible.
jax 0.5.2 requires scipy>=1.11.1, but you have scipy 1.10.1 which is incompatible.
jaxlib 0.5.1 requires numpy>=1.25, but you have numpy 1.23.5 which is incompatible.
jaxlib 0.5.1 requires scipy>=1.11.1, but you have scipy 1.10.1 which is incompatible.
tensorflow-intel 2.18.0 requires numpy<2.1.0,>=1.26.0, but you have numpy 1.23.5 which is incompatible.
treescope 0.1.9 requires numpy>=1.25.2, but you have numpy 1.23.5 which is incompatible.
Successfully installed arrow-1.3.0 d2l-1.0.3 fqdn-1.5.1 isoduration-20.11.0 jsonpointer-3.0.0 jupyter-1.0.0 matplotlib-3.7.2 numpy-1.23.5 pandas-2.0.3 pyparsing-3.0.9 requests-2.31.0 scipy-1.10.1 types-python

问题

这个错误是典型的依赖冲突问题,多个包对 numpy 和 scipy 的版本要求与当前安装的版本不兼容,核心问题是 numpy 1.23.5 和 scipy 1.10.1 版本过低,需升级。

解决

用conda升级

conda activate ***  # 激活你的环境
conda install numpy>=1.26.0 scipy>=1.11.1 -y

第三个,在vscode中运行Jupyter Notebook相关命令

问题

如何在vscode中运行只能在 Jupyter Notebook 等交互式环境中使用的相关代码,比如

%matplotlib inline

解决

1.在vscode中安装Jupyter插件(默认可以运行普通python文件)。

2.新建一个  .ipynb文件(如 derivative_demo.ipynb)。

3.将代码粘贴到单元格中,点击左侧的运行按钮或按 Shift+Enter

结语

大家在学习的时候肯定会多多少少遇到一些报错,遇到报错的时候我一般会向AI软件提问,AI已经可以解决我们的绝大多数报错了,如果没解决那就换种方式问AI。与此同时,我们也可以在csdn上搜索和我们报错相关的文章,有可能就找到答案了。请你相信,问题一定会解决的!

更多推荐