Python-future: Встроенный импорт не работает в версии 0.17.0

Созданный на 26 окт. 2018  ·  14Комментарии  ·  Источник: PythonCharmers/python-future

Импорт встроенных функций в версии 0.17.0 вызывает ошибку.

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

Самый полезный комментарий

У нас та же проблема, но что интересно, если мы установим pip install без каталога кеша, это сработает ...

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
>>>

Все 14 Комментарий

У нас здесь та же проблема.

Пытаюсь указать причину проблемы, но пока не ясно.

У нас та же проблема, но что интересно, если мы установим pip install без каталога кеша, это сработает ...

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
>>>

в Windows, удалив кэшированное будущее 0.17.0 whl из C: \ Users \\ AppData \ Local \ pip, а затем повторная установка пакета исправляет его.

так что похоже (это теория), что более ранняя публикация 0.17.0 была нарушена, но теперь исправлена.

@jmadler дайте нам знать, что произошло, мы хотели бы понять контекст.

Скажите, пожалуйста, разве вы не построили колесо future с Python-3 и не пробовали использовать его с Python-2? Если да, то это может быть причиной проблемы.

хорошо, если будущее колесо построено на python 3, кэшировано как универсальное, а затем извлечено python 2 из кеша, это может быть оно.

Извините, ребята! Это мой первый дистрибутив именно этого пакета (и PyPI тоже ...)

Когда я сделал сборку, я запустил python setup.py sdist с Py3, протестировал pip install dist/future-0.17.0.tgz как на Py2, так и на Py3 и проверил его установку с помощью этого механизма. Я провел проверку установки, протестировав несколько импортированных и dir () в REPL для встроенных функций, reprlib и будущих

После проверки я запустил twine upload dist/future-0.17.0.tgz чтобы довести его до PyPI.

pip2 --version && pip3 --version :

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

Другая возможность состоит в том, что локальный bdist_wheel построен на Py3, где-то кэширован и рассматривается как универсальный (когда это не так), но я не загружал колесо в PyPI.

Я не могу воспроизвести пустой venv с pip install future==0.17.0 для Py2 и Py3 на моем компьютере с macOS.

Возможно ли, что PyPI как-то переписывает пакет? Или, возможно, поведение pip изменилось?

в Windows удаление кэшированного будущего 0.17.0 whl из C: \ Users\ AppData \ Local \ pip, а затем повторная установка пакета исправляет его.

так что похоже (это теория), что более ранняя публикация 0.17.0 была нарушена, но теперь исправлена.

Я думаю, слишком. Может кто-нибудь выпустит 0.17.1 с исправлением)

Действительно, если пакет установлен через py3, он будет кэширован в локальном кеше pip. Любые будущие установки future (beit py2 или py3) будут использовать эту кешированную версию как помеченную как универсальную.

Однако в setup.py https://github.com/PythonCharmers/python-future/blob/master/setup.py#L61 есть это условие, которое делает сгенерированное колесо (теперь в кеше pip) несовместимым с py2 (поскольку оно был построен для py3). Я полагаю, что если колесо создается через py2, это может означать плохие новости для установки py3.

@jmadler Проблема решена в мастере, осталось только объединить PR # 404 и выпустить v0.17.1

Прямо сейчас, с v0.17.0, любой пользователь, использующий Py2 и Py3 на своей машине, рискует получить плохой кеш pip wheel и столкнуться с этой ошибкой.

Можно ли выпустить релиз как можно скорее? Если у вас есть вопросы / проблемы, задавайте их, я буду рад помочь 😃

Звучит хорошо, я выпустил 0.17.1 с включенными # 399 и # 404. Можете ли вы взглянуть и сообщить мне, решит ли он эту проблему за вас?

А1 - исправлено.

Шаги:

1) Запустите девственную машину с Windows 10 с установленными Python 3.6 и Python 2.7.

2) pip install future в контексте Python 3.6 - убедитесь, что колесо построено и кэшировано
py -3.6 -m pip установить будущее
кешируемое колесо: future-0.17.1-cp36-none-any.whl

3) pip install future в контексте Python 2.7 - убедитесь, что колесо построено снова и не использует кешированную версию с шага 2)
py -2.7 -m pip install future
кешируемое колесо: future-0.17.1-cp27-none-any.whl

4) В сеансе Python 2 импорт встроенных функций и ошибок не происходит.
ру -2,7
Python 2.7.8 (по умолчанию, 30 июня 2014 г., 16:03:49) [MSC v.1500 32 бит (Intel)] на win32
Для получения дополнительной информации введите «помощь», «авторские права», «кредиты» или «лицензия».

импорт встроенных функций

для сравнения у 0.17.0 было одно колесо: future-0.17.0-py2.py3-none-any.whl

У меня была эта проблема с 0.17.0, и я могу подтвердить, что 0.17.1 исправил ее.

Рад слышать это!

Спасибо Жилю, Винсенту и др. Ваше руководство было очень полезным :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги