NameError: el nombre global ‘xrange’ no está definido en Python 3

Recibo un error al ejecutar un progtwig de python:

Traceback (most recent call last): File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 27, in __init__ File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\class\inventory.py", line 17, in __init__ builtins.NameError: global name 'xrange' is not defined 

El juego es de aquí .

¿Qué causa este error?

Está intentando ejecutar una base de código de Python 2 con Python 3. xrange() cambió de nombre a range() en Python 3.

Ejecuta el juego con Python 2 en su lugar. No intente xrange() menos que sepa lo que está haciendo, lo más probable es que haya más problemas más allá de xrange() vs. range() .

Para el registro, lo que está viendo no es un error de syntax sino una excepción de tiempo de ejecución.


Si sabe lo que está haciendo y hace que una base de código de Python 2 sea compatible con Python 3, puede vincular el código agregando el nombre global a su módulo como un alias para el range . (Tenga en cuenta que es posible que tenga que actualizar cualquier uso de range() en la base de código de Python 2 con la list(range(...)) para asegurarse de que todavía obtenga un objeto de lista en Python 3):

 try: # Python 2 xrange except NameError: # Python 3, xrange is now named range xrange = range # Python 2 code that uses xrange(...) unchanged, and any # range(...) replaced with list(range(...)) 

o reemplace todos los usos de xrange(...) con range(...) en la base de código y luego use un shim diferente para hacer que la syntax de Python 3 sea compatible con Python 2:

 try: # Python 2 forward compatibility range = xrange except NameError: pass # Python 2 code transformed from range(...) -> list(range(...)) and # xrange(...) -> range(...). 

Lo último es preferible para las bases de código que desean ser compatibles con Python 3 solo a largo plazo. Es más fácil usar la syntax de Python 3 siempre que sea posible.

agrega xrange=range en tu código 🙂 Me funciona.

Reemplazar

Python 2 xrange to

range Python 3

Descansa todo igual.

Estoy de acuerdo con la última respuesta. Pero hay otra manera de resolver este problema. Puede descargar el paquete llamado future, como pip instalar future. Y en su archivo .py, ingrese esto “de past.builtins import xrange” .Este método Es por la situación que hay muchas xranges en su archivo.