Я пытаюсь запустить тензор потока в док-контейнере на плате Nitrogen6x (архитектура ARMv7).Я использую следующий dockerfile для установки python 3.5 и некоторых зависимостей для tenorflow (из колеса prebulit):
FROM arm32v7/python:3.5.7-stretch
RUN apt-get update && \
apt-get -y install openjdk-8-jdk automake autoconf && \
apt-get -y install curl zip unzip libtool swig libpng-dev zlib1g-dev pkg-config git g++ wget xz-utils
RUN curl https://bootstrap.pypa.io/get-pip.py | python3; exit 0 && curl https://bootstrap.pypa.io/get-pip.py | python3
RUN pip3 install --extra-index-url=https://www.piwheels.org/simple --user keras_applications==1.0.7 --no-deps
RUN pip3 install --extra-index-url=https://www.piwheels.org/simple --user keras_preprocessing --no-deps
RUN pip3 install --extra-index-url=https://www.piwheels.org/simple --upgrade --force-reinstall --no-deps setuptools; exit 0 && pip3 install --extra-index-url=https://www.piwheels.org/simple --upgrade --force-reinstall --no-deps setuptools
RUN pip3 install --extra-index-url=https://www.piwheels.org/simple --upgrade --force-reinstall --no-deps wheel; exit 0 && pip3 install --extra-index-url=https://www.piwheels.org/simple --upgrade --force-reinstall --no-deps wheel
COPY files /opt/tensorflow
RUN apt-get -y install libhdf5-serial-dev libhdf5-dev
RUN pip install h5py
RUN cd /opt/tensorflow \
&& pip install tensorflow-1.13.1-cp35-none-linux_armv7l.whl
CMD ["/bin/sh"]
Некоторая информация, почему я делаю то, что делаю в своем Dockerfile: из-за известного пунктаошибка, вызывающая следующее сообщение об ошибке
Traceback (most recent call last):
File "/usr/local/bin/pip3", line 6, in <module>
from pip._internal import main
ImportError: cannot import name 'main'
Мне нужно использовать версию пипа, предоставленную https://bootstrap.pypa.io/get-pip.py. Кроме того, мне нужно переустановить setuptools и wheel, потому что в противном случае я получаю следующую ошибку:
Collecting h5py
Downloading https://files.pythonhosted.org/packages/43/27/a6e7dcb8ae20a4dbf3725321058923fec262b6f7835179d78ccc8d98deec/h5py-2.9.0.tar.gz (287kB)
Complete output from command python setup.py egg_info:
/usr/local/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'setup_requires'
warnings.warn(msg)
/usr/local/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help
error: invalid command 'egg_info'
Каждый раз, когда я пытаюсь переустановить пакет в первый раз, я получаю сообщение об ошибке, похожее на следующее:
Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/tmp/pip-uninstall-xri7_n6a/easy_install.py'
В связи с этим я запускаюдважды переустановите команду.
Используя данный Dockerfile, я могу собрать контейнер Docker, но не могу импортировать некоторые модули Python из-за следующей ошибки:
Python 3.5.7 (default, Mar 20 2019, 12:13:45)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras_preprocessing
>>> import keras_applications
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/.local/lib/python3.5/site-packages/keras_applications/__init__.py", line 98, in <module>
from . import vgg16
File "/root/.local/lib/python3.5/site-packages/keras_applications/vgg16.py", line 16, in <module>
from . import imagenet_utils
File "/root/.local/lib/python3.5/site-packages/keras_applications/imagenet_utils.py", line 9, in <module>
import numpy as np
File "/usr/local/lib/python3.5/site-packages/numpy/__init__.py", line 187, in <module>
from .testing import Tester
File "/usr/local/lib/python3.5/site-packages/numpy/testing/__init__.py", line 10, in <module>
from unittest import TestCase
ImportError: cannot import name 'TestCase'
>>>
Есть ли идеи, как обойти / решить эту ошибку.Заранее спасибо.