Как устранить ошибку AttributeError: у модуля «Фиона» нет атрибута «Путь»?

У меня есть фрагмент кода, который до прошлой недели работал нормально, но теперь он выходит из строя со следующей ошибкой:

AttributeError: у модуля «Фиона» нет атрибута «Путь».

Я убедился, что все необходимые библиотеки установлены и импортированы. Есть ли у кого-нибудь идеи о том, что может пойти не так или как я могу решить эту проблему?

Спасибо!

 pip install geopandas
 pip install fiona

 import geopandas as gpd
 import fiona

 countries = 
 gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))

🤔 А знаете ли вы, что...
С Python можно создавать кросс-платформенные приложения для Windows, macOS и Linux.


2
194
3

Ответы:

Решено

TL;DR обновить до geopandas==0.14.4 ИЛИ закрепить fiona до версии 1.9.6

--

Кажется, fionaнедавно обновился до 1.10.0 (по состоянию на 2024-09-04 01:14 UTC), и это могло сломать некоторые старые версии geopandas, которые зависят только от того, что fiona выше, чем какая-то версия, а не ниже.

При ближайшем рассмотрении geopandas до версии 0.14.3 все еще вызывает fiona.path, но в версии 0.14.4 это уже не так.

Так что обновление geopandas до 0.14.4 должно это исправить.

Альтернативно, принуждение fiona оставаться на версии 1.9.6 также должно сработать.

ПРИМЕЧАНИЕ. Обновление geopandas до >=1.0, похоже, полностью удаляет fiona как зависимость, поэтому это также решит эту проблему. Но удаление geopandas.dataset открывает совершенно новую банку с червями. Подробнее об этом см. Как перенести карты в геопанды после удаления наборов данных?


t-brito ответ правильный. Если по какой-либо причине вы предпочитаете не обновлять геопанды, вы можете указать, какую версию fiona вы хотите при создании новой среды (перейдите в среду, которая ранее работала, не перестраивая ее, используйте команду «pip list» и получите версию fiona работаю с версией геопанды).

В моем случае фиона 1.9.6 соответствовала геопандам 0.13.2.


Исправление версии Фионы решает эту проблему, и я использовал geopandas==0.10.2 с fiona==1.9.6, и это сработало.!


Интересные вопросы для изучения

Я работаю над тем, чтобы сделать бота Python, который будет нажимать кнопку в списке, который повторяется сам, используя селенКакие замены регулярных выражений помогают при переписывании SQL-запросов MS Access как простых запросов TSQL? Как их можно зациклить с помощью Excel в качестве входных и выходных данных?Сообщение об ошибке с использованием нескольких замен строк %sДолжны ли классы аутентификации и классы разрешений в представлениях Django REST Framework определяться с помощью списков или кортежей?Есть ли сценарий, в котором `foo in list(bar)` нельзя заменить на `foo in bar`?Группировка Python по рангу в двух разных направленияхКак правильно загрузить json-файл для работы с его данными в Python?Выбор уникальных строк кадра данных, когда повторяющиеся значения меняются местами в нескольких столбцах в R?Выбор строк на основе кадра данных Padas с двумя столбцамиКак я могу назначить новый столбец, равный среднему значению строк другого фрейма данных, попадающих в диапазон?