Видеть «ImportError: нет имен модулей map_reduce» в GridMap при запуске примера - PullRequest
0 голосов
/ 22 октября 2018

Я создал кластер SGE на облачной платформе Google.Я установил GridMap на python 2.7.5 и, пытаясь запустить их примерные задания на python, которые можно найти здесь https://github.com/pygridtools/gridmap/tree/master/examples

, оба примера просто создают 4 задания, которые рассчитывают различные факториалы и возвращают результаты.Когда я пытаюсь запустить «map_reduce.py», я вижу ошибки на рабочих машинах, в которых говорится «ImportError: нет имен модулейданные с pickle

def zloads(pickled_data):
    """
    loads pickleable object from bz2 compressed string
    :param pickled_data: BZ2 compressed byte sequence
    :type pickled_data: bytes
    :returns: An unpickled version of the compressed byte sequence.
    """
    return pickle.loads(bz2.decompress(pickled_data))

Объект "pickled_data" поступает из вызова "recv" из вызова сокета zmq

# Get reply
msg = zloads(zsocket.recv())

Весь код gridmap можно найти здесь

https://github.com/pygridtools/gridmap/tree/master/gridmap

Благодарим любого помощника или предложение, которое кто-либо может предложить.Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Я думаю, что нашел ответ.Я закончил тем, что шагал по коду pickle, когда он пытался загрузить файл pickle.Я заметил, что он пытался импортировать модуль python, который пытался запустить, в данном случае 'map_reduce', чтобы получить доступ к функции, определенной в файле ('compute_factorial'), но что он искал путь к каталогу с исходной машины,Поэтому я попытался запустить работу из общего каталога, к которому все работники имеют доступ, и вуаля, успех.

Это было фундаментальное недоразумение с моей стороны относительно того, как работает gridmap.Я думал, что он на самом деле упаковал код Python и запустил его на рабочих машинах.На самом деле он выглядит так, как будто упаковывает указатель на этот код и ожидает, что сможет получить к нему доступ с рабочих компьютеров с одного и того же пути к каталогу.

...