Как загрузить Python 3 рассола в Python 2.7 * Не меняя его *? - PullRequest
1 голос
/ 07 января 2020

Я переношу большой кусок программного обеспечения с python 2.7 на python 3.7

. Для целей бэк-тестирования мне нужно иметь возможность читать старые (2.7) соленья в новых (3.7) python, и наоборот.

Я могу читать старые соленья в новых python.

Я также хочу иметь возможность читать новые соленья в старых python.

Я нашел этот ответ , но это не очень хорошо для меня, так как требует, чтобы я поменял рассол.

Есть ли способ прочитать python 3 маринада в python 2 без замены маринада ?

1 Ответ

0 голосов
/ 30 января 2020

Это лучшее решение, которое я смог найти:

Поскольку я могу менять новое программное обеспечение, но не старое, каждый раз, когда я создаю рассол, который должен быть прочитан старым программным обеспечением, Я делаю

def create_old_pickle(new_pickle):
    loaded = pickle.loads(new_pickle)
    repickled = pickle.dumps(loaded, protocol=2)
    return repickled

Это создает старые соленья в новых python.

Таким образом, старый программный API остается прежним.

Вы можете заметить проблемы с unicode-> байтами, но это нечто другое.

...