Импорт пакета nco: TypeError: объект типа NoneType не имеет len ()

Я пытаюсь использовать пакет nco для объединения нескольких файлов netcdf с помощью ncrcat. Само по себе это легко сделать, но я не могу обойти вторую строку:

from nco import Nco
nco=Nco()

mrms1= nc.Dataset("/Users/arian/project/data/mrms_20190501/20190501_190000.nc")
mrms2= nc.Dataset("/Users/arian/project/data/mrms_20190501/20190501_190500.nc")

nco.ncrcat(input=[mrms1, mrms2], output='testnet.nc')

Где nco = Nco () дает ошибку:

TypeError: object of type 'NoneType' has no len()

Обычно я знаю, что эта ошибка возникает, когда вы пытаетесь получить длину из ничего, но насколько я понимаю, этот экземпляр должен быть создан, чтобы использовать ncrcat в скрипте.

Я убедился, что на anaconda установлена ​​обновленная версия как nco, так и pynco. Я также попытался использовать пакет cdo для объединения файлов вместо файлов, но получаю ту же ошибку. Я также использовал ncrcat в качестве командной строки в терминале, но я получаю сообщение «термин не распознается как командлет, функция, файл сценария или работающая программа», так что это отдельная банка червей. Кроме того, netCDF4.MFDataset не работает, потому что данные не имеют измерения времени для агрегирования, как и xarray, который дает TypeError: принуждение к Unicode: требуется строка или буфер, набор данных найден.

Основываясь на многочасовых исследованиях, я считаю, что nco len () Typerror легче всего исправить, но любая помощь от всего, о чем я упомянул, приветствуется. Заранее спасибо.


person tornadogal    schedule 17.05.2020    source источник
comment
Я также использовал ncrcat в качестве командной строки в терминале, но я получаю, что термин не распознается как командлет, функция, файл сценария или работающая программа, так что это отдельная банка червей. ‹У меня такое чувство, что ответ лежит здесь. Вы должны иметь возможность запускать что-то из экосистемы NCO в своем терминале, верно? Я предполагаю, что тот факт, что он не распознается в PATH, является ключом к разгадке. Какую ОС вы используете?   -  person PeptideWitch    schedule 18.05.2020
comment
@PeptideWitch Я использую Windows 10, и я привык использовать Linux, который работал, когда я ранее импортировал этот пакет, так что вы, вероятно, правы. Под экосистемой NCO вы имеете в виду место, где установлен пакет, правильно? К сожалению, даже запуск из этого места дает тот же термин, который не распознается, ошибка, даже если я перечисляю полные пути к файлам netcdf   -  person tornadogal    schedule 18.05.2020
comment
Возможно, вам придется отредактировать переменные среды, чтобы при вводе команды в терминал командная строка знала, в каком каталоге искать. Кроме того, ознакомьтесь с 1.3.1 и 1.5 на сайте nco.sourceforge.net/nco .html # Windows-Operating-System. Возможно, LD_LIBRARY_PATH нужно отредактировать в переменных среды, чтобы они указывали на вашу установку?   -  person PeptideWitch    schedule 18.05.2020
comment
@PeptideWitch Спасибо за предложение. К сожалению, даже попытка этого не сработала, поэтому я удалил и установил снова, но безуспешно. Может, я не собираюсь использовать этот пакет, ха-ха. Но у него также есть возможности усреднения ансамбля, которые я действительно мог бы использовать.   -  person tornadogal    schedule 18.05.2020
comment
Я знаю это чувство! Были ли у вас предыдущие успехи с этим пакетом в системе Linux? Возможно, стоит попробовать это на дистрибутиве виртуального бокса Linux   -  person PeptideWitch    schedule 19.05.2020
comment
@PeptideWitch Да, я использовал его в системе Linux на своем компьютере в школе, но после того, как школа закрылась из-за COVID, я полностью перешел на свой ноутбук. Но я могу попробовать скачать Virtualbox! Единственное, на моем ноутбуке осталось всего несколько ГБ свободного места ... это то, что я могу загрузить на флешку, верно?   -  person tornadogal    schedule 19.05.2020
comment
Думаю, это возможно! Кажется, именно так вы это делаете . Возьмите виртуальный бокс, возьмите дистрибутив Linux, который вам нравится, создайте виртуальный жесткий диск (ваш USB) и установите на него   -  person PeptideWitch    schedule 19.05.2020
comment
В качестве альтернативы вы можете установить Linux на USB, а затем настроить загрузчик, чтобы вы могли загружаться с USB. Нет необходимости в виртуальном боксе   -  person PeptideWitch    schedule 19.05.2020
comment
Хорошо, попробую. Спасибо большое за вашу помощь!   -  person tornadogal    schedule 19.05.2020
comment
Пара быстрых замечаний 1) Аргумент ввода должен быть строкой имени файла или списком строковых имен файлов 2) Я не эксперт по conda, но если вы хотите запустить pynco, вам нужны команды nco в переменной среды PATH   -  person Henry Fey    schedule 22.05.2020


Ответы (1)


Два очка

1) ввод должен быть строкой с именем файла или списком строк с именами файлов
, например input = ["20190501_190000.nc", "20190501_190500.nc"]

2) Я не эксперт по conda, но для запуска pynco команды nco должны быть в вашей переменной среды PATH

person Henry Fey    schedule 22.05.2020