1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gurobiを利用した際のpython同士の競合によるエラー

1
Last updated at Posted at 2014-12-19

問題と当面の解決法

とあるpythonファイルを実行しようとしたら以下の様なエラーを吐き出しました.

$ python [filename].py
Fatal Python error: PyThreadState_Get: no current thread
[1]    1588 abort      python [filename].py

ちなみに,条件としては以下の様な状況でした.

  • 他のpythonファイルは実行できる
  • クリーンインストール以前は実行可能であった
  • 外部ライブラリ(gurobipy)を使用している

初めて見るタイプのエラーだったので何が原因だろうと調べてみたところ,簡潔に言えば,(元から?)Macにバンドルされているpythonとbrewでインストールしたpythonの間で何にかが悪さをし合ってるようです.
理由も分からないですが,もしかしたらpythonさんの管理もbrewで任せようってしたのがよろしくなかったのでしょうか.

と言うことで,brewのpythonさんをアンインストールしてしまいました.

brew uninstall python

これで解決.無事実行できるようになりました.
おそらくは2つのpythonさんのバージョンが違ったり(macが2.7.6でbrewが2.7.9),そのせいでパスが上手く通ってなかったりって原因なのでしょうが,よく理解してません.
しかし,直近のタスクが溜まっているので見て見ぬふりをすることにします.

もし,詳しい方がいらっしゃれば,原因を簡単に教えて頂ければ幸いです.

解決法(追記)

gurobiの開発者のGreg Glocknerさん曰く,gurobiはOSXにデフォルトでインストールされているpythonしかサポートしていないらしいですね.
つまり,brewのpythonをバージョンダウンするか,uninstall(消去),もしくはunlink(一時停止)するしかないのですね.

ちなみに,私はunlinkすることにしました.
とりあえずは,単純に

brew unlink python

で停止させておいて,必要なときは

brew link python

で復活させるって訳です,すっごい簡単!
もしくはpython内でgurobiを走らせる時のみ

import os
os.system('brew unlink python')

(実行内容)

os.system('brew link python')

のように書いても楽かもしれません.

解決していない気もしますが,何となく原因が分かったのでスッキリしました.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?