web-dev-qa-db-ja.com

PyCharmデバッグセグメンテーションエラー(信号11)

PyCharm(コミュニティ版2016.2.3)では、anaconda2 + ubuntu 14.04を使用して、import matplotlibは、デバッグモード中にシグナル11エラーを引き起こします。リリースモードでスクリプトを実行しても問題ありません。

pythonコード:

import matplotlib as pt

デバッグコンソール:

Pydevデバッガー(ビルド162.1967.10)に接続GLib-GIO-Message: 'memory' GSettingsバックエンドを使用。設定は保存されず、他のアプリケーションと共有されません。バックエンドQt4Aggはインタラクティブなバックエンドです。インタラクティブモードをオンにします。

プロセスは終了コード139で終了しました(シグナル11:SIGSEGVによって中断されました)

12
user155322

同じエラーメッセージが表示されました。私はanacondaを削除して代わりにminicondaをインストールし、pycharmを再インストールしました。終了コード139は、pythonコンソールとデバッグコンソールの両方を実行しているときに発生しました。

今私がmatplotlibをインポートするとき、私はまだメッセージを得ます:

バックエンドQt4Aggはインタラクティブなバックエンドです。インタラクティブモードをオンにします。

GLib-GIO-Message: 'memory' GSettingsバックエンドの使用。設定は保存されず、他のアプリケーションと共有されません。

それは理想的ではないと思いますが、終了コードを取得しておらず、すべてが機能しているようです。これは解決策ですが、より堅牢な方法が必要です。

0

少し遅いですが、それは一部のグーグルを助けるかもしれません。

Qtはこの問題を引き起こす可能性があります。 PyCharmはデフォルトで--qt-support = autoで実行されます。 python Qt4とQt5のバインディングがインストールされている場合、auto関数は正しいバージョンのQtを選択しない可能性があります。PyCharm設定(ビルド、例...-> Pythonデバッガ-PyQt互換)

AutoからPyQt4への設定は、何も削除せずにconda環境で機能しました。

9
FranzMueller

PyCharm設定(ビルド、例...-> Python Debugger)のQtボックスのチェックを外すことで、segfaultとコード139をなんとか取り除くことができました。リモートインタープリターいくつかの図のためだけに必要なmatplotlib.

5
Mircea

Qtバックエンドを別のバックエンドに切り替えることで、手早く簡単な回避策が得られます。たとえば、Matplotlibをインポートした直後にこれを追加します。

matplotlib.use('TkAgg')

利用可能なバックエンド の別の1つを使用することもできます。

Matplotlibの依存関係を持つさまざまなモジュールがあり、コードを汚染したくない場合、またはチームで作業している場合は、 matplotlibrc のバックエンドを変更することをお勧めします=。あなたはあなたが使っているmatplotlibrcを見つけることができます:

import matplotlib
print(matplotlib.matplotlib_fname())
3
crypdick

私はpyqt5バインディングを削除した後に動作しました。

Sudo apt-get remove python3-pyqt5

2
James D

私の場合は、pandasパッケージが原因でした。おそらく、スレッド化でデータフレームを実行していたのでしょう(サポートされていません!))。

原因を見つけるには、次のようにします。

gdb python
(gdb) script.py

(そしてそれがクラッシュしたとき)

where

スタックトレースが表示されます。私の場合、numpyに欠落しているファイルがあり、これは次の方法で修正されました

pip install --uppandas

1
Paamand

matplotlibをインポートする

次に、この文を使用します... matplotlib.use( 'TkAgg')

1
Teddy Z.P.J.