Scikit-learn: Python 3.7rc1で `pip install`が失敗する(コンパイルエラー)

作成日 2018年06月19日  ·  29コメント  ·  ソース: scikit-learn/scikit-learn

説明

Python 3.7rc1でpip install (コンパイルエラー: PyThreadStateにはメンバーがありません...)できません。

これが報告された場合はお詫びしますが、問題(クローズ/オープン)でもプルリクエストでも見つかりませんでした。

pyyaml(yaml / pyyaml#126)、numpy(numpy / numpy#10500)、cython(cython / cython#1978)、およびpygame(pygame / pygame#382)でも同様の問題が発生しています。

再現する手順/コード

Python3.7rc1をインストールします。
pip install scikit-learn

推測される結果

pip成功します。

実績

コンパイルエラー:

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

最も参考になるコメント

重要なのは、平均的なHomebrewユーザーはデフォルトでPython3.7を使用するということです。

Python3.7をサポートするマイナーな0.19.2リリースが進行中です。

全てのコメント29件

これを報告してくれてありがとう!

最新の開発バージョンのインストールは機能しますか?

pip install https://github.com/scikit-learn/scikit-learn/archive/master.zip

コンパイルするにはCython> = 0.27.3が必要になることに注意してください。

(将来の参照のためにhttps://github.com/scikit-learn/scikit-learn/issues/11224にリンクしています)

これはCythonが修正してリリースする必要があるもののようです。 我々
ここでは、CythonによるPy3.7のサポートに依存しています。

はい、 https://github.com/cython/cython/issues/1955によると、Python3.7での最小要件はこの問題が修正されたCython0.27.3です。 #11224では、ビルドがCython0.28で正常に機能することを確認できます。

doc/developers/advanced_installation.rstの最小のCythonバージョンは、おそらくPython3.7に応じて更新する必要があります

Python 3.7のサポートに移行する最も簡単な方法は、毎日の「最新の依存関係」ジョブでそれを使用することです。 ただし、これはNumPyとSciPyがPython3.7をサポートしている場合に最も簡単です。 NumPyは3.7用のホイールを製造しています。 現時点では、SciPyはPython 3.7でビルドを作成していませんが、作業中です(https://github.com/scipy/scipy/pull/8988)。 追随していきます。

IMO、v0.20.0でのPython 3.7のサポートについて心配する必要はありませんが、SciPyとSix(https://github.com)でのサポートが制限されているため、バグ修正リリース(0.20.1または0.20.2)で対処します。 / benjaminp / six / pull / 241)。

IMO、v0.20.0でのPython 3.7のサポートについて心配する必要はありませんが、バグ修正リリース(0.20.1または0.20.2)で対処します。

Python 3.7の状況を要約すると、

SciPyには、Python 3.7(すべてのプラットフォーム)用のバイナリホイールがあります。

FWIW、#11409は、numpy、scipy、cythonの開発バージョンでビルドでき、すべてのテストに合格することを示しています(PendingDeprecationWarningとDeprecationWarningはありますが)。 ただし、サンプルギャラリーを実行しようとはしません。 また、Windowsでビルドしようとはしません(おそらくそうすべきです)。

homebrewは私をpython 3.7.0にアップグレードし、scikit-learnがないままになりました。
いつ私がpip3 install scikit-learnできると思いますか? 一週間? 月? 一年?
待つか、3.6。*にダウングレードするかを決定するために、この情報が必要です。
どうもありがとうございました。

いつpip3install scikit-learnを実行できるようになると思いますか? 一週間? 月? 一年?

次のリリースのために非常に大まかに1か月。 一方、開発バージョンhttps://github.com/scikit-learn/scikit-learn/issues/11320#issuecomment -398556438をインストールするか、Python3.6にダウングレードすることができます。

Py3.7のサポートのためだけに0.19.2を急いでリリースすることを検討できますか??

それについて最近開かれた問題の量を考えると、それは確かに好ましいかもしれません。 また、将来Python 3.7を使用する人々のために、0.19.xと0.20.xの間の比較/回帰追跡を簡素化します。

0.19.2のリリースを行うことになった場合、特別な理由もなく0.19.1を見逃したため、追加を検討する2つのことがあります。

Ubuntu 18.04では、推奨される回避策は次のように機能します。
pip install https://github.com/scikit-learn/scikit-learn/archive/master.zip

@rth

次のリリースのために非常に大まかに1か月。 一方、開発バージョン#11320(コメント)をインストールするか、Python3.6にダウングレードすることができます。

HomebrewはデフォルトのPythonインストールを3.7に更新しました。 自作では特定のバージョンをインストールできないため、3.6にダウングレードするのは簡単なことではありません。 参考までに

@bgyarfasbrew

brew info python3
brew switch python 3.6.5

これは、以前のバージョンがまだローカルマシンにキャッシュされている場合にのみ機能します。

@bgyarfas 3.6がhomebrewにキャッシュされていない場合は、pyenvを使用できます。 以下は私のために働いた...

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

virtualenvなしでこれを行うことができますが、私の典型的なセットアップはそれに依存しています。

重要なのは、平均的なHomebrewユーザーはデフォルトでPython3.7を使用するということです。

重要なのは、平均的なHomebrewユーザーはデフォルトでPython3.7を使用するということです。

Python3.7をサポートするマイナーな0.19.2リリースが進行中です。

19.2リリースのタイムラインは何ですか?
ありがとう!

@ sam-s今すぐ必要な場合は、最新のcythonバージョンを使用してマスターブランチをインストールしてみてください。

pip install -U cython
pip install -e git+https://github.com/scikit-learn/scikit-learn@master#egg=scikit-learn

これは、pipenvを使用したPython3.7で機能しました。
もちろん、リリースが利用可能になったら、(おそらく)不安定なマスターブランチから正しいリリースに交換する必要があります。

基本的に準備ができている0.19.Xブランチからインストールすることもできます
リリースしましたが、リリースできる人はまだいません。

リリース0.19.2がPyPIで利用可能になりました: https ://pypi.org/project/scikit-learn/0.19.2/

修正済みとして終了します。 Python3.7では0.19.2を使用してください。

0.20.Xの計画は何ですか? 0.20.0でビルドできるようですが、0.20.1ではビルドできません。
エラーは次のようなものです。

     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;

https://github.com/scikit-learn/scikit-learn/issues/11320#issuecomment -398631435に記載されているように、Cythonを更新してみましたか?

0.20.2にアップデートしたばかりで、機能しています。

0.20より低いすべてのバージョン(たとえば、 0.160.170.180.19 )が機能しなくなるという経験をしました。

私のテスト: https

これらのバージョンをカバーする計画はありますか?

0.20未満のすべてのバージョン(たとえば、0.16、0.17、0.18、0.19)が壊れることを経験しました。
これらのバージョンをカバーする計画はありますか?

そうは思いません。 Python 3.7を使用しているユーザーは、少なくともscikit-learn0.20.Xにアップグレードする必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価