Программирование (Python): Как устранить ошибку AttributeError: ‘Chip’ object has no attribute ‘get_line’, если планировалось использовать метод get_info?

Ошибка `AttributeError: ‘Chip’ object has no attribute ‘get_line’` возникает при работе с библиотекой `gpiod` (Python bindings для управления GPIO на Linux) и связана с переходом между версиями API этой библиотеки.

## Причина ошибки

В библиотеке `gpiod` существуют две принципиально разные версии API:

— **gpiod v1.x** — использует методы `get_line()`, `find_line()` и другие на объекте `Chip`.
— **gpiod v2.x** — полностью переработанный API, где методы `get_line()` и `find_line()` были **удалены**. Вместо них используются `request_lines()`, `get_info()`, `line_offset_from_id()` и другие.

Если вы установили `gpiod` версии 2.x, но пишете код по документации или примерам для версии 1.x, вы получите именно эту ошибку.

## Как проверить версию gpiod

python
import gpiod
print(gpiod.__version__)

Также можно проверить через терминал:
bash
pip show gpiod

## Решение: использование get_info() в gpiod v2.x

Если вы хотите получить информацию о чипе, используйте `get_info()`:

python
import gpiod

with gpiod.Chip(‘/dev/gpiochip0’) as chip:
info = chip.get_info()
print(f»Имя чипа: {info.name}»)
print(f»Метка: {info.label}»)
print(f»Количество линий: {info.num_lines}»)

Метод `get_info()` возвращает объект `ChipInfo` с атрибутами `name`, `label` и `num_lines`.

## Как получить доступ к линиям в gpiod v2.x

Вместо устаревшего `get_line()` используйте `request_lines()`:

python
import gpiod
from gpiod.line import Direction

with gpiod.request_lines(
‘/dev/gpiochip0′,
consumer=’my-app’,
config={4: gpiod.LineSettings(direction=Direction.OUTPUT)}
) as request:
request.set_value(4, gpiod.line.Value.ACTIVE)

## Решение через откат версии (если нужен старый API)

Если вы хотите использовать старый API с `get_line()`, можно откатиться до версии 1.x:

bash
pip install gpiod==1.5.4

Однако это не рекомендуется для новых проектов, так как v1.x больше не поддерживается.

## Итог

Ошибка возникает из-за несовместимости версий API библиотеки `gpiod`. Для современного кода используйте `get_info()` для получения информации о чипе и `request_lines()` для работы с GPIO-линиями в соответствии с API версии 2.x.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.