Код успешно выполняется на одной машине, но на другой выдает «Ошибка типа: невозможно объединить объекты str и int» - PullRequest
0 голосов
/ 06 июня 2019

У меня есть сценарий, который использует пакет Py-ART для считывания данных бортового метеорологического радара и последующего контроля качества этих данных.Я отмечу, что я подозреваю , что это не проблема с этим пакетом, в противном случае я бы просто опубликовал проблему в этом репо ...

Запутанный аспект этой проблемы заключается в том, чтокод работает на моем компьютере без ошибок, как в Python 2.x, так и в 3.x, хотя он завершается ошибкой со следующей ошибкой на компьютере коллеги в Python 2.x:

TypeError: cannot concatenate 'str' and 'int' objects

Ошибка возникает при попытке выполнить последнюю строку этого блока кода:

az_raw = radar.azimuth['data'].data
roll = radar.roll['data'].data
azmth = az_raw + roll
azmth[azmth < 0] += 360

Некоторые возможные подсказки, которые я вывел из исследования проблемы:

  1. На моем компьютере, где код работает правильно, переменные az_raw и roll считываются как массивы типа float32, тогда как на компьютере моего коллеги эти переменные имеют тип Buffer.После добавления содержимого roll в az_raw (поэлементно), azmth остается массивом float32 на моем компьютере и становится массивом str на другом компьютере.

  2. Py-ART использует пакет netCDF4 для чтения данных из входных файлов netCDF - возможно, здесь есть проблема, связанная с машиной и / или версией?

  3. Проблема сохраняется независимо от входного файла (т. Е. Мы пробовали несколько и из разных периодов / проектов сбора данных с одинаковыми результатами.

Итак, в конечном счете, мой вопрос сводится к тому, что может вызвать TypeError, как это на одном компьютере, а не на другом, когда все остальное кажется одинаковым? Я полагаю, что может быть разница в версии зависимостиPy-ART, netCDF4 и т. Д.) Между двумя машинами, но мне не ясно, как это могло бы вызвать такую ​​проблему. Кто-нибудь видел что-нибудь подобное раньше?

1 Ответ

1 голос
/ 06 июня 2019

Согласен с Норриусом. Существует проблема зависимости. Как Py-ART был установлен на каждой машине? Лучший способ убедиться, что все работает, - это использовать среду Conda, чтобы вы могли контролировать (и изолировать) зависимости.

На самом деле, теперь я смотрю на ошибку (Buffer вместо float). Я знаю, что на машине вашего коллеги устарели пакеты, включая Numpy. Если он обновляет NumPy (это проблема в области ввода-вывода, я думаю, https://docs.scipy.org/doc/numpy/reference/generated/numpy.frombuffer.html, против строки)

Также обратите внимание, что поддержка Py-ART для Python 2.x будет очень скоро прекращена. В следующей версии, которую мы выпустим, к октябрю наш CI для 2.x будет отключен.

...