«OverflowError: int слишком велик для преобразования в int» в PyPy6.0.0 в Windows - PullRequest
0 голосов
/ 05 октября 2018

Предисловие

Существует стандартная Python реализация, известная как CPython .Но это не единственный, в настоящее время я работаю с альтернативной реализацией с именем PyPy .

Проблема

У меня странное несоответствие вповедение PyPy & CPython реализации Python3,5 в Windows 10 x64 со следующим фрагментом (благодаря @Gabriel, завершенный пример)

>>> from itertools import repeat
>>> repeat(None, 2**31)

в CPython дает

repeat(None, 2147483648)

, в то время как в PyPy он заканчивается ошибкой с нечетным сообщением

Traceback (most recent call last):
  File "<input>", line 1, in <module>
OverflowError: int too large to convert to int

но когда я пытаюсь выполнить этот фрагмент в PyPy внутри Docker контейнера

docker run -it pypy:3-6

, он работает нормально, как CPython version.

Я знаю, что Windows версия находится в стадии бета-тестирования, но кто-нибудь может объяснить, почему она так себя ведет и что говорит это сообщение об ошибке (или что оно должно сказать)?

Обновление

Для CPython Однако следующий оператор

>>> repeat(None, 2**63)

дает

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C ssize_t

- эти ошибки somehow связаны?

...