Но даже после попытки с каждым из них отдельно ошибка остается прежней.
Правильный PATH, похоже, добавлен в .bashrc
export PATH="home/jdevezas/anaconda/bin:$PATH"
А в makefile.config Caffe у меня есть
# ЗАМЕТКА: это требуется только в том случае, если вы собираетесь компилировать
# интерфейс python.
# Нам нужно иметь возможность находить Python.h и numpy/arrayobject.h.
#PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
# Распределение Anaconda Python довольно популярно. Путь включения:
# Проверьте расположение anaconda, иногда оно находится в /root.
ANACONDA_HOME := /home/jdevezas/anaconda
#PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
# $(ANACONDA_HOME)/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
# Раскомментируйте, чтобы использовать Python 3 (по умолчанию используется Python 2)
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
Я также пробовал с Python 2.7 безрезультатно.
Я проверил /usr/include/python3.5m, и Python.h там есть. Какие предложения?
Чтобы отследить, в каких пакетах находится файл, используйте
apt-file search Python.h
Список (для Ubuntu 20.04) показывает два вероятных кандидата для последней версии python: libpython3.8-dev и pypy3-dev.
Пакет, который нужно установить, это libpython3.8-dev
Установите apt-file с помощью
sudo apt-get install apt-file
Затем обновите его базу данных:
apt-file update
В моем случае папка python находилась в /opt/anaconda3/include/, что я нашел с помощью
$ which conda
/opt/anaconda3/bin/conda
Переменная $CONDA_PREFIX была пустой в моем случае, так как
$ echo $CONDA_PREFIX
вывела просто пустую строку.
Обновлено (2021-01-11): заголовок Python.h теперь находится в $CONDA_PREFIX/include/python3.Y (где Y – минорная версия) в случае Linux или $CONDA_PREFIX/include в Windows.
Старый ответ: заголовок python.h находится в директории $CONDA_PREFIX/etc/include/python3.6m.
Ответ или решение
Решение проблемы: fatal error: Python.h: No such file or directory при компиляции pycaffe на Ubuntu 16.04
Ошибки компиляции в программном обеспечении Python, особенно в контексте таких проектов, как Caffe, могут быть достаточно распространенными. Сообщение об ошибке fatal error: Python.h: No such file or directory указывает на то, что компилятор не может найти файл заголовка Python.h, что, как правило, связано с отсутствием нужных библиотек или неправильными путями к ним.
Причины и возможные решения
Проверка наличия файла Python.h
Первым шагом следует убедиться, что заголовочный файл Python.h действительно присутствует в системе. Если вы используете Anaconda, скорее всего, он находится в директории, связанной с вашей установкой Anaconda. Вы можете проверить его наличие с помощью команды:
find /opt/anaconda3/include/ -name Python.h
Если файл найден, запомните его путь, так как он понадобится для конфигурации.
Установка необходимых пакетов
Вы уже пробовали устанавливать пакеты python3-dev, python3.5-dev, и python3.6-dev. Однако, если вы используете Anaconda, то скорее всего, эта команда не решит вашу проблему. Лучше всего установить пакет libpython3.X-dev соответствующей версии Python (где X – это минорная версия):
sudo apt-get install libpython3.6-dev
Однако, для Anaconda убедитесь, что ваш путь к библиотекам Python настроен верно.
Настройка пути в makefile.config
В вашем makefile.config нужно правильно указать путь к Python.h и другим необходимым заголовкам, которые будут использоваться при компиляции. Вам следует заменить блок с PYTHON_INCLUDE на:
Убедитесь, что пути к Python.h и библиотекам NumPy указаны правильно, иначе компилятор не сможет их найти.
Проверка переменной окружения
Переменная окружения CONDA_PREFIX должна указывать на ваш текущий окружение Anaconda. Если она пустая, возможно, ваше окружение неактивно. Активируйте его следующей командой:
source activate <your-env-name>
Замените <your-env-name> на имя вашего окружения. После активации проверьте значение переменной CONDA_PREFIX:
echo $CONDA_PREFIX
Если переменная установлена и содержит путь к вашему окружению, это означает, что вы на правильном пути.
Использование обновлённых путей для заголовков
В более новых версиях Anaconda заголовочные файлы находятся в следующих директориях:
На Linux: $CONDA_PREFIX/include/python3.Y
На Windows: $CONDA_PREFIX/include
Где Y — это минорная версия вашего Python. Убедитесь, что указан правильный путь.
Заключение
Соблюдая приведённые выше рекомендации, вы сможете устранить ошибку связанной с отсутствием Python.h при компиляции проекта pycaffe на Ubuntu 16.04. Если ошибка продолжает возникать, несмотря на правильные настройки, может потребоваться пересобрать проект или создать новое виртуальное окружение Anaconda. Это поможет избежать конфликта версий и библиотек, который может вести к подобным ошибкам.