LoginSignup
4
3

More than 5 years have passed since last update.

[備忘録] pyenvで無限ループが発生した場合の確認事項

Last updated at Posted at 2016-02-28

背景

データ解析ライブラリをまとめて導入するためにanacondaをインストールしようとしたのですが、pyenv(複数バージョンのPythonを切り替えられるパッケージ)でanacondaをインストールしようとした途中でpipやpythonコマンドを実行すると無限ループが発生しました。
「pyenv 無限ループ」などで調べて、a_yasuiさんの投稿なども参考にしたのですが、.bash_profileの先頭で

PATH=$PATH:~/.pyenv/shims/
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

を追加し、.bashrcも確認したため、何か別のことに問題があるのだろうと推測しました。

環境

OS: Mac OSX El Capitan 10.11.3
実行環境: Mac標準のTerminal
pyenv: Build 20151210, 20160202 で確認
*pyenvはHomeBrewでインストール

症状と解決策

症状としては、pipコマンドなどを実行すると bash → readlink → bash というようにコマンドがループして、実行が進まなくなりました。
解決策としては、Pythonをpyenv installコマンドでインストールして、pyenv localでpythonを適用すれば直りましたorz
まず、

>> which python
/Users/user/.pyenv/shims/python
>> which pip
/Users/user/.pyenv/shims/pip

となっていたのですが、pyenv version コマンドを入力すると、

>> pyenv version
system (set by /Users/user/.pyenv/version)

とだけ表示されていたので、「あれ、pyenvでPython入れてないじゃん」ということに気づき、

// >> pyenv install -l でインストール可能なバージョンを確認できる
>> pyenv install Python3.5.0 // Pythonのインストール
>> pyenv rehash // pyenvをリフレッシュ
>> pyenv local Python3.5.0 // pythonの適用
>> pyenv global Python3.5.0 // pythonの適用

と入力して、使用するPythonを変更した後に pip, pythonコマンドを実行するとうまくいきました。
おそらくですが、pyenvの環境内(/Users/user/.pyenv/)で用いるpythonにsystemのpythonが用いられると不具合があるのではないかと勝手に想像しています。

もしかすると再現性のない症状かもしれないのと、pyenvをよく理解しないで利用していたための凡ミスだと思いますが、同じような症状に偶然なられた方は pyenvで用いられているPythonがsystemのものでないかを確認してみてください。ご参考になれば幸いです。

*追記
やはり、

pyenv local system
pyenv global system
pip

と入力して、pipなど実行すると無限ループが再現しました。僕の環境のみで起こることなら良いのですが...

appendix

そもそもなぜpythonが動かないと気付いたのかと言うと、SublimeCodeIntelを利用していて、logを見ていると

evaluating 'str' at hoge.py#37: no Python scan info for <Python buf 'hoge.py'>
done eval: eval error

と出力されてました。pythonがおかしいのではないかと当たりをつけてterminalでpythonを実行すると上の症状が発覚したという流れです。

4
3
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
4
3