Python-future: importación incorporada rota en la versión 0.17.0

Creado en 26 oct. 2018  ·  14Comentarios  ·  Fuente: PythonCharmers/python-future

La importación de archivos incorporados en la versión 0.17.0 provoca un error.

>>> import builtins
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named builtins
>>>

Comentario más útil

Tenemos el mismo problema, pero curiosamente, si instalamos pip sin el directorio de caché, funciona ...

pip install -U --force   future
>>> import builtins
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named builtins
>>>
pip install -U --force  --no-cache-dir future
>>> import builtins
>>>

Todos 14 comentarios

Tenemos el mismo problema aquí.

Intentando señalar el origen del problema, pero aún no está claro.

Tenemos el mismo problema, pero curiosamente, si instalamos pip sin el directorio de caché, funciona ...

pip install -U --force   future
>>> import builtins
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named builtins
>>>
pip install -U --force  --no-cache-dir future
>>> import builtins
>>>

en Windows, eliminando el futuro en caché 0.17.0 whl de C: \ Users \\ AppData \ Local \ pip y luego reinstalar el paquete lo corrige.

por lo que parece (es una teoría) que la publicación anterior de 0.17.0 se rompió, pero ahora está arreglada.

@jmadler háganos saber lo que sucedió, nos gustaría comprender el contexto.

Dime, por favor, ¿no has construido future wheel con Python-3 y has intentado usarlo con Python-2? Si es así, esta puede ser la causa del problema.

bueno, si la rueda del futuro es construida por Python 3, almacenada en caché como universal y luego recuperada por Python 2 de la caché, eso podría ser.

¡Lo siento amigos! Esta es mi primera distribución de este paquete en particular (y PyPI también ...)

Cuando hice la compilación, ejecuté python setup.py sdist con Py3, y probé pip install dist/future-0.17.0.tgz tanto en Py2 como en Py3 y lo validé instalado a través de ese mecanismo. Realicé la validación de la instalación probando algunas importaciones y dir () en el REPL para las versiones integradas, reprlib y futuras

Una vez validado, ejecuté twine upload dist/future-0.17.0.tgz para subirlo a PyPI.

pip2 --version && pip3 --version :

pip 10.0.1 de /usr/local/lib/python2.7/site-packages/pip (python 2.7)
pip 18.0 de /usr/local/lib/python3.7/site-packages/pip (python 3.7)

Otra posibilidad es que el bdist_wheel local esté construido en Py3 y almacenado en caché en algún lugar y tratado como universal (cuando no lo es), pero no cargué una rueda en PyPI.

No puedo reproducir en un venv vacío con pip install future==0.17.0 para Py2 y Py3 en mi máquina macOS.

¿Es posible que PyPI esté reescribiendo el paquete de alguna manera? ¿O quizás ha cambiado el comportamiento de pip?

en Windows, eliminando el futuro en caché 0.17.0 whl de C: \ Users\ AppData \ Local \ pip y luego reinstalar el paquete lo corrige.

por lo que parece (es una teoría) que la publicación anterior de 0.17.0 se rompió, pero ahora está arreglada.

Creo también. Tal vez alguien pueda lanzar 0.17.1 con corrección)

De hecho, si el paquete se instala a través de py3, se almacenará en caché en la caché pip local. Cualquier instalación futura de future (beit py2 o py3) usará esta versión en caché como su marcada universal.

Sin embargo, setup.py https://github.com/PythonCharmers/python-future/blob/master/setup.py#L61 tiene ese condicional que hace que la rueda generada (ahora en el caché de pip) sea incompatible para py2 (ya que fue construido para py3). Me imagino que si la rueda se genera a través de py2, podría significar malas noticias para una instalación de py3.

@jmadler El problema se aborda en master, lo único que quedaba sería fusionar PR # 404 y lanzar v0.17.1

En este momento, con la v0.17.0, cualquier usuario que use Py2 y Py3 en su máquina corre el riesgo de tener un caché de rueda de pip defectuoso y encontrar este error.

¿Es posible sacar un comunicado lo antes posible? Si tiene alguna pregunta / inquietud, pregunte, estaré encantado de ayudar 😃

Suena bien, publiqué 0.17.1 con # 399 y # 404 incluidos. ¿Puede echar un vistazo y hacerme saber si soluciona este problema?

A1 - fijo.

Pasos:

1) Haga girar una máquina virgen con Windows 10 con Python 3.6 y Python 2.7 instalados

2) pip install future en un contexto de Python 3.6: confirme que la rueda está construida y almacenada en caché
py -3.6 -m pip instalar futuro
rueda en caché: future-0.17.1-cp36-none-any.whl

3) pip install future en un contexto de Python 2.7: confirme que la rueda está construida nuevamente y no está usando la versión en caché del paso 2)
py -2.7 -m pip instalar futuro
rueda en caché: future-0.17.1-cp27-none-any.whl

4) En una sesión de Python 2, importe los archivos incorporados y no se produzcan errores
py -2,7
Python 2.7.8 (predeterminado, 30 de junio de 2014, 16:03:49) [MSC v.1500 de 32 bits (Intel)] en win32
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.

importar incorporados

por comparación, 0.17.0 tenía esta única rueda: future-0.17.0-py2.py3-none-any.whl

Tuve este problema con 0.17.0 y puedo confirmar que 0.17.1 lo solucionó.

¡Alegra oírlo!

Gracias Gilles, Vincent, et al. Tu orientación ha sido muy útil :)

¿Fue útil esta página
0 / 5 - 0 calificaciones