Incapaz de pip install
(erro de compilação: PyThreadState
não tem membro ...) com Python 3.7rc1.
Minhas desculpas se isso foi relatado, mas não consegui encontrar nos problemas (fechado / aberto) nem em qualquer solicitação de pull para ele.
Houve problemas semelhantes com pyyaml (yaml / pyyaml # 126), numpy (numpy / numpy # 10500), cython (cython / cython # 1978) e pygame (pygame / pygame # 382).
Instale o Python 3.7rc1.
pip install scikit-learn
pip
sucesso.
Erros de compilação:
...
sklearn/cluster/_dbscan_inner.cpp: In function ‘int
__Pyx__GetException(PyThreadState*, PyObject**, PyObject**, PyObject**)’:
sklearn/cluster/_dbscan_inner.cpp:6029:24: error: ‘PyThreadState’ has no member named ‘exc_type’
tmp_type = tstate->exc_type;
^
sklearn/cluster/_dbscan_inner.cpp:6030:25: error: ‘PyThreadState’ has no member named ‘exc_value’
tmp_value = tstate->exc_value;
^
sklearn/cluster/_dbscan_inner.cpp:6031:22: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tmp_tb = tstate->exc_traceback;
^
sklearn/cluster/_dbscan_inner.cpp:6032:13: error: ‘PyThreadState’ has no member named ‘exc_type’
tstate->exc_type = local_type;
^
sklearn/cluster/_dbscan_inner.cpp:6033:13: error: ‘PyThreadState’ has no member named ‘exc_value’
tstate->exc_value = local_value;
^
sklearn/cluster/_dbscan_inner.cpp:6034:13: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tstate->exc_traceback = local_tb;
^
error: Command "g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g
-fwrapv -O3 -Wall -fPIC
-I/data/install/lib/python3.7/site-packages/numpy/core/include
-I/data/install/lib/python3.7/site-packages/numpy/core/include
-I/data/install/include/python3.7m -c sklearn/cluster/_dbscan_inner.cpp -o
build/temp.linux-x86_64-3.7/sklearn/cluster/_dbscan_inner.o -MMD -MF
build/temp.linux-x86_64-3.7/sklearn/cluster/_dbscan_inner.o.d" failed with exit
status 1
Linux-3.10.0-862.el7.x86_64-x86_64-with-redhat-7.5-Maipo
Python 3.7.0rc1 (default, Jun 19 2018, 10:54:58)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
NumPy 1.14.5
SciPy 1.1.0
Obrigado por relatar isso!
A instalação da versão dev mais recente funciona?
pip install https://github.com/scikit-learn/scikit-learn/archive/master.zip
Observe que você precisaria de Cython> = 0.27.3 para compilá-lo.
(Link para https://github.com/scikit-learn/scikit-learn/issues/11224 para referência futura)
Parece que isso pode ser algo que a Cython precisa consertar e liberar. Nós
dependem do suporte da Cython para Py3.7 aqui.
Sim, de acordo com https://github.com/cython/cython/issues/1955, os requisitos mínimos do Python 3.7 são Cython 0.27.3, onde esse problema foi corrigido. Em # 11224, posso confirmar que a construção funciona bem com Cython 0.28.
A versão mínima do Cython em doc/developers/advanced_installation.rst
provavelmente deve ser atualizada de acordo com o Python 3.7
A maneira mais fácil de mudarmos para o suporte ao Python 3.7 é usá-lo em nosso trabalho diário de "dependências mais recentes". Mas isso é mais fácil quando o NumPy e o SciPy oferecem suporte ao Python 3.7. NumPy está produzindo rodas para 3.7. No momento, o SciPy não está fazendo compilações no Python 3.7, mas está trabalhando nisso (https://github.com/scipy/scipy/pull/8988). Tentaremos seguir o exemplo.
IMO, não devemos nos preocupar com o suporte a Python 3.7 na v0.20.0, mas lidar com isso em uma versão de correção de bug (0.20.1 ou 0.20.2), dado o suporte limitado em SciPy e Six (https://github.com / benjaminp / six / pull / 241).
IMO, não devemos nos preocupar com o suporte do Python 3.7 na v0.20.0, mas lidar com isso em uma versão de correção de bug (0.20.1 ou 0.20.2),
Para resumir a situação do Python 3.7,
SciPy agora tem rodas binárias para Python 3.7 (todas as plataformas).
FWIW, # 11409 identifica que podemos construir com as versões de desenvolvimento de numpy, scipy e cython, e todos os testes passam (embora com PendingDeprecationWarning e DeprecationWarning). No entanto, ele não tenta executar a galeria de exemplos. Nem tenta compilar no Windows (talvez devesse).
homebrew
me atualizou para o python 3.7.0 e agora fico sem o scikit-learn.
quando você acha que poderei fazer pip3 install scikit-learn
? uma semana? um mês? um ano?
Preciso dessas informações para decidir se devo esperar ou fazer o downgrade para o 3.6. *.
Muito obrigado.
quando você acha que poderei fazer o pip3 install scikit-learn? uma semana? um mês? um ano?
Um mês quase para o próximo lançamento. Enquanto isso, você pode instalar a versão de desenvolvimento https://github.com/scikit-learn/scikit-learn/issues/11320#issuecomment -398556438 ou fazer downgrade para o python 3.6.
Podemos considerar o lançamento do 0.19.2 rapidamente apenas para o suporte ao Py3.7 ??
Dada a quantidade de questões que foram abertas recentemente sobre isso, pode ser preferível de fato. Também simplificará comparações / rastreamento de regressão entre 0,19.xe 0,20.x para pessoas que usam Python 3.7 no futuro.
Se acabarmos lançando o 0.19.2, aqui estão duas coisas a considerar, porque eles perderam o 0.19.1 sem nenhum bom motivo.
No Ubuntu 18.04, a solução alternativa recomendada funciona:
pip install https://github.com/scikit-learn/scikit-learn/archive/master.zip
@rth
Um mês quase para o próximo lançamento. Enquanto isso, você pode instalar a versão de desenvolvimento # 11320 (comentário) ou fazer o downgrade para o python 3.6.
O Homebrew atualizou sua instalação padrão do Python para 3.7. Já que o homebrew não permite a instalação de versões específicas, o downgrade para o 3.6 não é uma perspectiva fácil. Apenas um FYI
@bgyarfas deve ser possível fazer o downgrade do python 3.7 de volta para o 3.6.5 no brew
brew info python3
brew switch python 3.6.5
Isso funciona apenas se a versão anterior ainda estiver armazenada em cache na máquina local.
@bgyarfas Se você não tem o 3.6 em cache no homebrew, pode usar o pyenv. O seguinte funcionou para mim ...
brew install pyenv
pyenv install 3.6.5
eval "$(pyenv init -)"
pyenv shell 3.6.5
pip install virtualenv
virtualenv venv-3.6
source venv-3.6/bin/activate
Você pode fazer isso sem o virtualenv, mas minha configuração típica depende dele.
Acho que o ponto é que o usuário Homebrew médio terá o Python 3.7 por padrão.
Acho que o ponto é que o usuário Homebrew médio terá o Python 3.7 por padrão.
Uma versão secundária 0.19.2 que oferecerá suporte ao Python 3.7 está em andamento.
qual é o cronograma para o lançamento 19.2?
obrigado!
@ sam-s Se precisar agora, você pode tentar instalar o branch master usando a versão mais recente do cython:
pip install -U cython
pip install -e git+https://github.com/scikit-learn/scikit-learn@master#egg=scikit-learn
Isso funcionou para mim no Python 3.7 usando pipenv.
Claro, quando a versão estiver disponível, você deve trocar do branch master (possivelmente) instável para a versão correta.
você também pode instalar a partir do branch 0.19.X que está basicamente pronto para
lançamento, mas as pessoas que podem fazer o lançamento não estiveram disponíveis.
A versão 0.19.2 agora está disponível em PyPI: https://pypi.org/project/scikit-learn/0.19.2/
Fechamento corrigido. Use 0.19.2 com Python 3.7.
Qual é o plano para 0.20.X? Parece que posso construir com 0.20.0, mas não com 0.20.1.
Os erros são como:
sklearn/cluster/_hierarchical.cpp:24792:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = *tb;
Você tentou atualizar o Cython conforme mencionado em https://github.com/scikit-learn/scikit-learn/issues/11320#issuecomment -398631435?
Acabei de atualizar para 0.20.2 e está funcionando.
Fiz a experiência de que todas as versões inferiores a 0.20
(por exemplo, 0.16
, 0.17
, 0.18
, 0.19
) quebrarão.
Meus testes: https://travis-ci.org/nok/sklearn-porter/builds/561765760
Existem planos para cobrir essas versões?
Eu fiz a experiência de que todas as versões inferiores a 0,20 (por exemplo, 0,16, 0,17, 0,18, 0,19) irão quebrar.
Existem planos para cobrir essas versões?
Acho que não. Os usuários com Python 3.7 precisam atualizar para o scikit-learn 0.20.X pelo menos.
Comentários muito úteis
Uma versão secundária 0.19.2 que oferecerá suporte ao Python 3.7 está em andamento.