Фиона не видит файл .shp в качестве распознанного формата

#python #github-actions #shapefile #geopandas #fiona

Вопрос:

Все мои тесты проходят на моем локальном компьютере, однако, когда я пытаюсь использовать файл .yml для их проверки каждый раз, когда создается запрос на извлечение, происходит несколько сбоев. Пример одного из сообщений об ошибке показан ниже:

 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   ???
E   fiona._err.CPLE_OpenFailedError: 'static_data/england_wa_2011_clipped.shp' not recognized as a supported file format.

fiona/_err.pyx:291: CPLE_OpenFailedError
 

Мой файл Linux .yml приведен ниже, я уже пытался изменить рабочий каталог, и он кажется правильным. Файл не поврежден, и поскольку он одинаков на обеих виртуальных машинах, я думаю, что это проблема с Фионой. В этом файле также есть соответствующий файл для тестирования на виртуальной машине Windows, однако они выдают одни и те же сообщения об ошибках и проваливают одни и те же тесты.

 name: Python Linux application

on:
  pull_request:
    branches: [ '**' ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.8
        uses: actions/setup-python@v2
        with:
          python-version: 3.8
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          sudo apt-get install libproj-dev proj-data proj-bin
          sudo apt-get install libgeos-dev
          sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
          sudo apt-get update
          sudo apt-get install gdal-bin libgdal-dev
          pip install GDAL==3.2.3
          pip install flake8 pytest Cython numpy pyproj pygeos
          if [ -f requirements-linux.txt ]; then pip install -r requirements-linux.txt; fi
      - name: Lint with flake8
        run: |
          # stop the build if there are Python syntax errors or undefined names
          flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
          # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
          flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
      - name: Test with pytest
        run: |
          pytest
 

Репо на GitHub: https://github.com/Zach10a/seedpod_ground_risk
Филиал-это CI.

Комментарии:

1. Можете ли вы указать нам на свой репозиторий github? Нам было бы намного проще помочь, если бы мы могли клонировать ваш код и изучить поведение самостоятельно.

2. Сделано! Выпьем за то, что взглянули.

Ответ №1:

Ваша проблема actions/checkout@v2 в том, что действие по умолчанию не проверяет файлы, хранящиеся с использованием LFS. Таким образом, пока в вашем репозитории есть файл с именем, например, static_data/england_wa_2011_clipped.shp содержимое будет выглядеть примерно так:

 version https://git-lfs.github.com/spec/v1
oid sha256:c60f74e3b8ed753d771378f0b03b7c8e8a84406f413a37f9f5242ac9235a2e6c
size 114084720
 

Итак, Фиона дает вам точную ошибку:

 E   fiona._err.CPLE_OpenFailedError: 'static_data/england_wa_2011_clipped.shp' not recognized as a supported file format.
 

Вам необходимо указать checkout действие для загрузки файлов, хранящихся в LFS:

     steps:
      - uses: actions/checkout@v2
        with:
          lfs: true
 

Вы можете найти хранилище, где я все это тестирую, здесь.