Это может показаться странным, но суть в том, что мне нужно сериализовать функцию и десериализовать ее (включая аргументы) на другой машине, для чего мне нужно убедиться, что правильный модуль И НЕ __main__ импортируется перед десериализацией (в противном случае я получаю сообщение об ошибке AttributeError: объект 'module' не имеет атрибута my_fun).
До сих пор я пробовал проверку:
Код: Выделить всё
import inspect
print inspect.getmodule(my_fun)
Код: Выделить всё
Что мне действительно нужно, так это . Я полагаю, что хакерским способом было бы проанализировать его по имени файла, используя что-то вроде
Код: Выделить всё
m_name = __main__.__file__.split("/")[-1].replace(".pyc","")
Есть ли более чистый/лучший способ сделать это?
РЕДАКТИРОВАТЬ:
Узнав о «FakeModule» ipython и еще немного погуглив, я наткнулся на этот пост, который точно описывает проблему, с которой я столкнулся, включая мое текущее решение (которое явно импортирует текущий модуль import current_module и сериализует current_module.my_fun вместо my_fun). Я пытаюсь этого избежать, так как это может быть не интуитивно понятно пользователям моего пакета.
Подробнее здесь: https://stackoverflow.com/questions/107 ... e-not-main