关于安装tensorflow安装时gdal和numpy不兼容问题汇总

平常安装其他包时候直接使用pip install 或者conda install即可,但是在安装tensorflow和安装gdal时候就会遇到一些包版本不兼容问题,

您可能会遇到以下问题:
问题1:AttributeError: module 'numpy' has no attribute 'object'。这是因为以前的NumPy版本中使用了np.object作为内置的object的别名,但在较新的版本中这种别名已被废弃。

问题2 这也是常见的问题:ImportError: numpy.core.multiarray failed to import。这个问题通常是由于问题安装或损坏的NumPy包引起的。

问题3:您可能会遇到以下问题:UserWarning: h5py is running against HDF5 1.12.1 when it was built against 1.12.0, this may cause problems。这是由于HDF5库的版本不兼容导致的。h5py在构建时使用一种版本的HDF5库(1.12.0),而在运行时,它发现您的系统上安装的HDF5库版本与它构建时使用的不同(1.12.1),这可能会导致问题。
等等。。。

上述问题都是因为tensorflow与一些gdal或者其他包冲突导致的,他们有一些共同依赖的包,例如hdf5、numpy包,如果版本没有对应上在使用时候很容易报错。

因为gpu版本的tensorflow需要用到cuda和cudnn, 通过官网查表知道它们版本对应tensorflow2.6.0+cuda11.2+cudnn8.1。

我们可以通过conda info tensorflow-base==2.6.0命令查看该版本的tensorflow依赖哪些,也可以使用conda info tensorflow-base | findstr “numpy” 来查看能依赖的所有numpy版本。
关于安装tensorflow安装时gdal和numpy不兼容问题汇总_第1张图片
我们注意到依赖的包有numpy>=1.20(这个版本实测行不通)。实测匹配的版本是numpy==1.19.5h5py>=3.1.0

我们继续看一下h5py都依赖哪些包,可以使用conda info h5py==3.1.0
关于安装tensorflow安装时gdal和numpy不兼容问题汇总_第2张图片
可以看到其中有一个hdf5>=1.10.6,<1.10.70a0

为什么要注意这些包呢?因为这些包也是gdal所依赖的包。

经过检查,我们发现gdal3.3.0版本对hdf5和numpy也在这个范围。

所以我们接下来可以按照这个版本进行安装:

注意这里我先安装gdal,因为gdal对包兼容性不高,为了防止后期调用时候发生错误,我们需要先安装gdal。建议使用conda安装而不是使用pip安装。

conda install gdal==3.3.0 hdf5==1.10.6

安装tensorflow,目前conda上tensorflow只更新到2.6.0。官方建议使用pip安装。

pip安装和conda安装的区别:

  • pip安装是照顾当前安装的包。如果环境中已经存在依赖包但是与当前的版本不匹配时候,pip会先删除这些依赖包,然后安装兼容当前安装包的版本,这可能会导致安装完后之前的包因为依赖包版本的改变而不能使用。另外使用pip安装时如果未指定则会安装最新版本。
  • conda安装是照顾已经按照的包。如果当前的安装的包所依赖包已经存在在环境中conda则不会因为版本问题删除这些依赖,而是将当前包安装合适的版本,以适配已经按照的依赖。如果用户指定了安装版本,但是与已经存在的依赖不兼容,则会安装失败。这样做的好处是安装包后不会导致之前的包不能使用,缺点是每次安装需要收索conda库,有时候很费时间。

通过情况下如果没有版本要求,建议使用conda安装。但是有一些特定包例如tensorflow,需要我们使用pip安装。一个原因是TensorFlow不在conda上更新了,另外一个原因是conda提供的TensorFlow依赖包版本不准确。例如TensorFlow2.6.0在conda中显示numpy的兼容版本>=1.20.0,但是实际上真实使用中会报错。根据测试经验,TensorFlow2.6.0的匹配的numpy的版本是19.5(通过pip安装时候知道)。

下面详细说一下TensorFlow安装:

  1. 先确定TensorFlow的版本,可以查阅官网提供的对应表,可以知道TensorFlow 2.6.0 + CUDA 11.2 + cuDNN 8.1 是对应的。

  2. 安装兼容性较低的包(不需要可以跳过),例如gdal需要提前安装好。

  3. 安装TensorFlow。官网先下载好合适版本的离线版的.whl文件使用pip进行安装。

  4. 兼容修改。pip安装的TensorFlow的依赖包keras==1.12.1实际上需要安装的是keras==2.6.0。需要我们更新keras包,使用pip install keras==2.6.0将这些内容改成markdown格式:

# 安装gdal和hdf5 (可以省去)
conda install gdal==3.3.0 hdf5==1.10.6

# 安装TensorFlow
pip install tensorflow-2.6.0-cp38-cp38-win_amd64.whl

# 更新keras
pip install keras==2.6.0

因为Windows和Linux的命令有所不同,上述命令可能需要进行一些修改,具体可以根据实际情况进行调整。

总之,要安装TensorFlow和gdal,需要首先检查它们依赖的共同包的版本兼容性,确定安装的兼容版本,并注意先安装gdal,然后安装TensorFlow。如果使用pip安装TensorFlow,还需要注意兼容修改,如更新keras包等。

你可能感兴趣的:(tensorflow,python,人工智能)