Python-future: Importação de builtins quebrada na versão 0.17.0

Criado em 26 out. 2018  ·  14Comentários  ·  Fonte: PythonCharmers/python-future

Importar builtins na versão 0.17.0 causa erro.

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

Comentários muito úteis

Temos o mesmo problema, mas curiosamente, se instalarmos sem cache dir, 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 comentários

Temos o mesmo problema aqui.

Tentando apontar a origem do problema, mas ainda não está claro.

Temos o mesmo problema, mas curiosamente, se instalarmos sem cache dir, 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
>>>

no Windows, removendo o futuro 0.17.0 em cache de C: \ Usuários \\ AppData \ Local \ pip e, em seguida, reinstalar o pacote corrige o problema.

então parece (é uma teoria) que a publicação anterior de 0.17.0 foi interrompida, mas agora está corrigida.

@jmadler nos

Diga-me, por favor, você não construiu future wheel com Python-3 e tentou usá-lo com Python-2? Nesse caso, essa pode ser a causa do problema.

bem, se o futuro wheel for construído pelo python 3, armazenado em cache como universal e, em seguida, recuperado pelo python 2 do cache, pode ser isso.

Desculpe pessoal! Esta é a minha primeira distribuição deste pacote específico (e também do PyPI ...)

Quando fiz a compilação, executei python setup.py sdist com Py3 e testei pip install dist/future-0.17.0.tgz em Py2 e Py3 e validei a instalação por meio desse mecanismo. Conduzi a validação da instalação testando algumas importações e dir () no REPL para builtins, reprlib e futuros

Uma vez validado, executei twine upload dist/future-0.17.0.tgz para levá-lo ao 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)

Outra possibilidade é que o bdist_wheel local seja construído em Py3 e armazenado em cache em algum lugar e tratado como universal (quando não é), mas eu não carreguei uma roda para PyPI.

Não consigo reproduzir em um venv vazio com pip install future==0.17.0 para Py2 e Py3 em minha máquina macOS.

É possível que o PyPI esteja reescrevendo o pacote de alguma forma? Ou talvez o comportamento do pip tenha mudado?

no Windows, removendo o futuro 0.17.0 em cache de C: \ Usuários\ AppData \ Local \ pip e, em seguida, reinstalar o pacote corrige o problema.

então parece (é uma teoria) que a publicação anterior de 0.17.0 foi interrompida, mas agora está corrigida.

Eu também acho. Talvez alguém possa liberar 0.17.1 com correção)

De fato, se o pacote for instalado via py3, ele será armazenado em cache no cache local do pip. Qualquer instalação futura de future (beit py2 ou py3) usará esta versão em cache como seu universal marcado.

No entanto, o setup.py https://github.com/PythonCharmers/python-future/blob/master/setup.py#L61 tem essa condicional que torna a roda gerada (agora no cache pip) incompatível para py2 (uma vez que foi construído para py3). Eu imagino que se a roda for gerada via py2, isso pode significar más notícias para uma instalação de py3.

@jmadler O problema foi resolvido no master, a única coisa restante seria mesclar o PR # 404 e a versão v0.17.1

Agora, com a v0.17.0, qualquer usuário que use Py2 e Py3 em sua máquina corre o risco de obter um cache de pip wheel ruim e atingir esse erro.

É possível liberar o mais rápido possível? Se você tiver alguma dúvida / preocupação, pergunte, terei todo o gosto em ajudar 😃

Parece bom, lancei o 0.17.1 com # 399 e # 404 incluídos. Você pode dar uma olhada e me dizer se isso aborda esse problema para você?

A1 - fixo.

Degraus:

1) Gire uma máquina Windows 10 virgem com Python 3.6 e Python 2.7 instalados

2) pip install futuro em um contexto Python 3.6 - confirme se a roda foi construída e armazenada em cache
instalação de pip py -3,6 -m futuro
roda em cache: future-0.17.1-cp36-none-any.whl

3) pip install futuro em um contexto Python 2.7 - confirme se a roda foi construída novamente e não usando a versão em cache da etapa 2)
instalação de pip py -2,7 -m futuro
roda em cache: future-0.17.1-cp27-none-any.whl

4) Em uma sessão do Python 2, importe os builtins e nenhum erro acontecerá
py -2,7
Python 2.7.8 (padrão, 30 de junho de 2014, 16:03:49) [MSC v.1500 32 bits (Intel)] no win32
Digite "ajuda", "copyright", "créditos" ou "licença" para obter mais informações.

importar embutidos

pela comparação 0.17.0 tinha esta roda única: future-0.17.0-py2.py3-none-any.whl

Tive esse problema com o 0.17.0 e posso confirmar que o 0.17.1 o corrigiu.

Fico feliz em ouvir isso!

Obrigado Gilles, Vincent, et al. Sua orientação foi muito útil :)

Esta página foi útil?
0 / 5 - 0 avaliações