プログラミングや電子工作などについての記事がほとんどです

pyenvでバージョンが切り替えられなくて苦労した話

2 件のコメント

2016/7/7追記

pythonを呼び出すときに優先してpyenvのpythonを呼び出すように初期化するコマンドを実行してみるといいかもしれません。 eval "$(pyenv init -)" これを実行して直ったら下記の手順を踏まなくても大丈夫ですね。

pyenvで指定したpythonが起動しない

ここまでのあらすじ

  • pyenvインストールしたった!
  • yyuu/pyenvリポジトリのreadmeの通りにPATH通したった!
  • いくつか違うバージョンのpythonインストールしたった!

意気揚々と使い出すがしかし……

  • $ python local 3.4.3でバージョン指定したった!
  • $ python -V (エンターキーターン!!)
  • Python 2.7.10
  • あれ?3.4.3指定したのに
  • 一応globalも指定してみて試すか $ python global 3.4.3
  • $ python -V 今度こそ!(エンターキーターン!!)
  • Python 2.7.10
        /\___/ヽ   ヽ
       /    ::::::::::::::::\ つ
      . |  ,,-‐‐   ‐‐-、 .:::| わ
      |  、(o),:  (o), :::|ぁぁ
    .   |    ::<      .::|あぁ
       \  /( [三] )ヽ ::/ああ
       /`ー‐–‐‐―´\ぁあ

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)
SBクリエイティブ (2016-03-16)
売り上げランキング: 19,659

解決編

怪しかったところ

なんでうまくいかないのかと、とりあえず$ which python実行すると、usr/local/bin/pythonが返ってきた。~/.pyenvを通ってないのはおかしい。

HomebrewでインストールしたPythonのせいだった

さっき返ってきたusr/local/bin/pythonっていうのは昔Homebrewでインストールしたpythonだったんですね。brew listしたらやっぱりいました。ということで

$ brew uninstall python
Uninstalling /usr/local/Cellar/python/2.7.10_2... (4906 files, 77M)
を実行。さよならぱいそん……
そして$ python -Vを実行すると、無事Python 3.4.3が返ってきました。めでたしめでたし。

Pythonスタートブック
Pythonスタートブック
posted with amazlet at 16.08.26
辻 真吾
技術評論社
売り上げランキング: 3,122

2 件のコメント :

  1. コメント失礼します。
    pythonインストールに関して調べてみましたところ、このような記事を発見しました。

    "Mac OS Xで複数バージョンのPythonを利用する(1)複数Verインストール編"
    http://qiita.com/_rdtr/items/3927e042b2ca18f03b8c

    この方法を使えば、デフォルトでインストールされているpythonではなく、homebrewでインストールしたpythonを使うことが可能なようです。ご報告いたします。

    もし既にこの記事をお読みになっていてあえてこの方法を取らなかった理由、せっかくhomebrewでインストールしたpythonではなくデフォルトインストールのpythonを使う理由などがありましたら、後学のために教えていただけませんでしょうか。
    よろしくお願いします。

    返信削除
    返信
    1. コメントいただきありがとうございます。

      教えていただいた記事を参考にすれば特別なパッケージを入れなくても2.x系と3.x系のPythonが利用できることが可能なようですね。

      私はこの記事は読んでいなくて、たまたま最初に調べた時に知ったのがpyenvを使う方法だった、というのが使い始めた理由です。後付けにはなってしまいますが、私が「今」pyenvを使う理由を考えてみました。使っていて便利だと思うことを書き上げますね。

      1. プロジェクト毎にバージョン指定ができる
      `pyenv local バージョン名`のコマンドを用いて、pythonを呼び出した時に使用するバージョンを指定できます。そのため、最初に設定さえしておけば、実行する際にどのバージョンを使うかを考える手間が省けます。直近にいじったコードであれば問題ないのですが、時間が経つと実行するときどれを使えば良かったのかわからなくなったりしますので……。もちろんコードを見れば凡そ推測は出来るのだと思うのですが、プログラムを実行するだけでよければその手間は惜しいと考えます。

      2. バージョン2.x,3,x以外の実装も同様に
      Pythonの実装にはanacondaやpypy、Stacklessなどいくつかの実装があります。これらも一緒に管理するとなると、やはり前述の1.の例のような場合にpyenvが便利になるのかなと思います。

      参考になれば幸いです。これからもどうぞよろしくお願いします。

      削除