嵌入式板子上真的非常难配环境,头大,什么bug都能遇上,特别是网络问题,很折磨。这个h5py包这个问题,困了我半天,不知道什么原因。之前在win10上根本没遇到的问题,导致我根本没有往架构方面想,问题如下:
这是主要的两种报错,大概就是说,兼容存在问题,numpy,cython,python和h5py之前存在问题,这个报错太误导了,导致我解决思路一直存在问题,我搜了很多博客,大概就是说:
反正就是,兼容是不存在问题的,我目前使用的是,python3.6,numpy1.19,cython0.25.2,h5py3.1.0。真正的问题是:jetson tx2 nx是arm架构,h5py没有为 ARM64 (aarch64) 架构提供预编译的 wheel 文件。
哎,也是我蠢了,半天了没想着去手动下载h5py,因为直接用命令行下载压缩包没出问题,结果一去pypi看,才发现,根本没有arm架构的h5py。我这里就想到两种解决办法,第一种是网上找到的,说是可以从源码编译安装h5py,这样就可以在arm架构上安装并且提到arm架构上可能存在内存不够的问题,不过我个人尝试之后,并没有解决问题,依然报错,只不过没有再报错找不到合适的版本。
源码安装
这个方法我没有成功,不想看的可以直接去下一个方法。
首先要确保依赖项安装成功:
sudo apt-get install python3-dev libhdf5-dev
如果报错,建议可以更新一下apt。
然后从源码安装h5py,这边建议不要用wget,网络都是其次,手动下载更加安稳。链接:h5py · PyPI
放到目录之后,进入目录,然后解压,并且安装:
tar -zxvf h5py-3.1.0.tar.gz
cd h5py-3.1.0
pip3 install .
看到别人说可能存在内存问题,可以增加交换空间:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
这个方法我个人尝试没有成功,不过,应该也是一种解决办法。另外看到他们说,如果还是不行,可以考虑使用2.10.0版本,兼容性更好,但是pvn3d会不会不支持这个版本,导致其他包出问题,所以没有尝试。
conda安装
这个方法可以说非常抽象了,我本来是没报希望的,因为我之前每次用conda下载包,要么提示频道里没有这个包,要么就是解决环境问题一直转圈,很烦,结果这次用conda下载直接就解决问题了,该说不说,conda还得是conda,环境问题还得靠他。
我直接运行
conda install h5py
就成功了。
我也很懵逼,这个问题没有多余的说的了。就这么突兀的解决了。。。