朋友说树莓派64位不识别总线摄像头,去github issue查看说是64位树莓派不支持,于是就换到了32位系统,32位系统已经被时代抛弃了,装个tensorflow都要经历九九八十一难。
Docker似乎只有amd64框架的
这里有armv7的whl,但是要求python3.7,32位树莓派包管理器里面没有python3.7,装起来难得要死
最开始尝试在包管理器里面寻找python3.7,没找到
然后打算用archiconda来创建虚拟环境,但最后发现,archiconda只为Arm64提供支持,32位根本无法安装
archiconda不行,miniconda也有arm版本的,于是去找了arm版本的miniconda,最终之找到了一个15年的版本,好像听知乎说也无法安装到python3.7的环境
conda的路走不通,那能不能用其他虚拟环境,python有个虚拟环境管理工具virtualenv,但是conda之外的虚拟环境管理工具好像必须先安装了对应的python可执行文件才能创建,那完全就不符合我的需求了,我就是因为其他途径装不上才去找virtualenv的。失败
这个仓库里面有python3.8的whl包,而树莓派的包管理器里面正好就有python3.8,开始尝试!
没有pip怎么安装包呢,安装pip的几种方式
我用这些方法好像都是却distutils.core
和distutils.cmd
之类的,按理来说这个应该安装了setuptools
应该就可以了,但是可能和系统的python有冲突,装了setuptools还是不行。
去github下载setuptools的源码进行安装使用sudo python3.8 setup.py install
来安装。可是安装之后仍然没有用,缺distutils.core
,但是我是已经安装了的。我查找了一下发现软件包的位置不太对
用locate查一下distutils/core.py的位置(下面的文本是用QQ传的,被QQ转成表情了,想不出来原本是什么了,就还原成这个样子吧)
pi@robotsystem:~ $ locate distutils/core
/usr/lib/pypy/lib-python/2.7/distutils/core.py
/usr/lib/python3/dist-packages/jedi/third_party[表情]peshed[表情]dlib/2and3/distutils/core.pyi
/usr/lib/python3/dist-packages/mypy[表情]peshed[表情]dlib/2/distutils/core.pyi
/usr/lib/python3/dist-packages/mypy[表情]peshed[表情]dlib/3/distutils/core.pyi
/usr/lib/python3/dist-packages/numpy/distutils/core.py
/usr/lib/python3/dist-packages/setuptools/_distutils/core.py
/usr/lib/python3.8/site-packages/setuptools-67.6.1-py3.8.egg/setuptools/_distutils/core.py
/usr/lib/python3.9/distutils/core.py
/usr/local/lib/python3.9/dist-packages/numpy/distutils/core.py
可以看到有个/usr/lib/python3.8/site-packages/setuptools-67.6.1-py3.8.egg/setuptools/_distutils/core.py
,而且我看着这个_distutils/core.py的内容和distutils/core.py是差不多的,所以我试图将/usr/lib/python3.8/site-packages/setuptools-67.6.1-py3.8.egg/setuptools/_distutils/
软链接到/usr/lib/python3.8/site-packages/
# 备份原来的distutils或者把原来的distutils文件夹删掉
sudo mv /usr/lib/python3.8/site-packages/distutils
# 软链接过去
ln -s /usr/lib/python3.8/site-packages/setuptools-67.6.1-py3.8.egg/setuptools/_distutils/ /usr/lib/python3.8/site-packages/distutils
解决。然后就可以通过脚本方式安装pip了,其实搞好setuptools的distutils基本上哪种方式都好安装了。
通过脚本的方式可以保证都能够安装到最新版本的pip,同时操作简单。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
我这样就安装成功pip3.8了。
下载whl包,四个都要下载,先安装libclang
,再tensorflow_io_gcs_filesystem
和tensorflow_io
最后安装tensorflow
。
安装tensorflow
中途遇到一个pyh5
的包安装失败了三次
从报错提到python开发相关的包没有安装,需要安装python-dev
或者python-devel
,很庆幸,包管理器中有这个包
sudo apt install python3.8-dev
重新安装tensorflow
File "/usr[表情]b/python3.8/distutils/cmd.py", line 107, in __getattr__
raise AttributeError(attr)
AttributeError: install_layout
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for numpy
Running setup.py clean for numpy
error: subprocess-exited-with-error
解决方法:更新setuptools,之前源码安装的setuptools好像并没有生效
pip3.8 install -U setuptools
running build_ext
/tmp/pip-build-env-qlynfwsg/overlay[表情]b/python3.8/site-packages[表情]tuptools/config/pyprojecttoml.py:108: _BetaConfiguration: Support for `[tool.setuptools]` in `pyproject.toml` is still *beta*.
warnings.warn(msg, _BetaConfiguration)
Loading library to get build settings and version: libhdf5.so
error: Unable to load dependency HDF5, make sure HDF5 is installed properly
error: libhdf5.so: cannot open shared object file: No such file or directory
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for h5py
Failed to build h5py
ERROR: Could not build wheels for h5py, which is required to install pyproject.toml-based projects
缺少libhdf5.so链接库,可能是hdf5没有安装,安装libhdf5-dev包(还是hdf5-dev包不太记得了)
# 可以先apt search hdf5搜索一下
sudo apt install libhdf5-dev
原因:python3.8似乎读到了python3.9的numpy,3.8重新单独安装一下即可
pip3.8 install --force-reinstall numpy
至此tensorflow就安装好了,之后装scikit-learn还遇到好多坑,不过问chatgpt好像都能问出来。