pyenvを使ってPythonをmacOS BigSur にインストール


pyenvをインストール

brewコマンドを実行

pyenvをインストールするには下記コマンドを実行

brew install pyenv

.zprofileに設定を追記

ターミナル起動時にpyenvが自動実行させるように、.zprofileに下記設定を追加

echo 'if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi' >> ~/.zprofile

設定を反映

sourceコマンドを利用して、.zprofileに追記した設定を反映

source ~/.zprofile

Pythonをインストール

Pythonのバージョンを調

python --version

Python 3.9.0をインストール

pyenv install 3.9.0

他のバージョンをインストールしたい場合は、インストール可能なバージョンを確認

pyenv install --list

Python環境の切り替え

システムのPython環境からpyenvでインストールしたPython環境に切り替える

pyenv global 3.9.0
python --version

pyenvとは

pythonのバージョンを簡単に切り替えることができるようにしてくれるツールです。2系列と3系列との切り替えに便利です。また、ディレクトリごとにpythonのバージョンを切り替えることができます。

pyenvのインストール

ではまず、 pyenvをインストールしましょう。gitから持ってくる場合上のコマンドを、brewが使える場合は下のコマンドを利用してもできます。

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ brew install pyenv

bash_profileの編集

次にpyenvのパスを通すためにbash_profileを編集します。

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

またはvimを使ってbash_profileに直書きしても構いません。

$ vim ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

最後にbash_profileの保存を適用します

$ source ~/.bash_profile

pyenvでpythonをインストール

バージョン切り替えを体験するために2つほどバージョンが違うpythonをインストールしてましょう。インストールできるか確認をしたければ3つめのコマンドを利用すると一覧が確認できます。

$ pyenv install 2.7.10
$ pyenv install 3.5.0
$ pyenv install --list 

pyenvでバージョンを切り替えてみる

バージョンの切り替えをしてみます。localの場合は今いるディレクトリに、globalの場合は全体に反映されます。

$ pyenv local 2.7.10
$ pyenv global 3.5.0

ここできちんと変更が反映されているか確認するためpythonのバージョンを調べます。

$ python --version
Python 2.7.10

このように変更が反映されていれば問題ありません。
反映されていなければ下の記事をお試しください。

pyenvでのpythonのバージョンがpython -vと違う時の対処法

例えばpyenvでバージョンを2.7.10に切り替えたはずなのに、pythonのバージョンを調べたら3.5.0だった…
なんてことがあるかもしれません。

$ pyenv versions
  system
* 2.7.10
  3.5.0
$ python --version
Python 3.5.0

その場合、whichコマンドでパスを表示してみてください。

$ which python
/usr/bin

このようになっていたら、それはデフォルトでPCに入っているpythonを参照してきています。もしここでpyenvの方を参照するようにパスを変更したければ、以下のように編集してください。

$ vim /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin

これで、パスがusr/binよりも/usr/localを優先されるようになります。確認のためwhichコマンドをもう一度入力すると

$ which python
/usr/local/bin/pyenv

のようになるはずです。
最後にもう一度pyenvのpythonのバージョンがpythonのバージョンと一致するか確かめてみてください。

参考リンク集

参考にさせていただいたリンクです。もっと詳しく知りたい方はぜひご活用ください。
– pyenv 利用のまとめ
– pyenvを使ってMacにPythonの環境を構築する
– 書き込み権限のないユーザでファイルを編集してしまったとき Can’t open file for writing

はじめに

pythonではpyenvというツールを使うことで、複数バージョンのpython環境を簡単に切り替えることができるようになります。2系列と3系列との切り替えにおいて重宝します。では、早速pyenvによる、pythonのバージョンを変更の仕方を説明します。

開発環境

OS:macOS Mojave(10.14.4)

インストール可能なpythonのバージョンを確認する

$ pyenv install --list

ここでpyenvがインストールできていない人はHomebrewを使ってインストールしましょう。

$ brew install pyenv

それぞれのバージョンのpythonをインストールする

$ pyenv install 3.7.2
$ pyenv install 2.7.10

変更可能なpythonのバージョンを確認する

$ pyenv versions
  system
* 3.7.2 (set by /Users/user/.pyenv/version)

現在のpythonのバージョンを確認する

$ python --version
Python 2.7.10

pythonのバージョンを変更可能なバージョンに変更する

$ pyenv global 3.7.2
$ python --version
Python 2.7.10

ここでpythonのバージョンが適切に変更されていませんね。次のコマンドを入力してください。(以下記事が参考になります。)
pyenvがバージョンを切り替える仕組みを理解する

$ eval "$(pyenv init -)"

再度、pythonのバージョンを確認してみましょう。

$ python --version
Python 3.7.2

きちんと変更できましたね。

仕組みとしてはeval “$(pyenv init -)”で環境変数PATHに.pyenv/shimsを追加し、pyenv globalやpyenv localで該当バージョンのpythonを.pyenv/shimsにコピーしているようです。

pyenvがバージョンを切り替える仕組みを理解するより引用)

参考記事

pyenvがバージョンを切り替える仕組みを理解する
pyenvを使って、pythonバージョンの変更

下記の Python バージョンを pyenv を用いてインストールするとき、
ビルドに失敗する場合にお試しください。

確認済みバージョン

  • 3.9.0
  • 3.8.6

問題

  • macOS BigSur 11.0 beta、11.1 Beta
  • Xcode 12.2 beta 3
  • Command Line Tools for Xcode 12 beta 3

上記のケースで
pyenv install 3.9.0
pyenv install 3.8.6
を実行すると、下記のようにビルドに失敗するshell

..
BUILD FAILED (OS X 11.0 using python-build 20180424)
..
make: *** [install] Error 1

解決策

Step1: XCode コマンドラインツールの設定

  1. Xcode-beta.app / Xcode.appを開く
  2. XCode -> Preference -> Locations
  3. Command Line Tools を 目的のバージョンに変更 

Step2: pyenv に指定の Python をインストール

シェルで下記を実行shell

LDFLAGS="-L$(xcrun --show-sdk-path)/usr/lib" pyenv install 3.9.0

確認

インストールを確認shell

pyenv versions
* system (set by /usr/local/var/pyenv/version)
  3.9.0

グローバルに設定
シェルをリロード
Python バージョンの確認shell

pyenv global 3.9.0
zsh -l
python --version
Python 3.9.0

無事 3.9.0 になりました。


Source:
https://github.com/pyenv/pyenv/issues/1643
https://medium.com/@koji_kanao/install-python-3-8-0-via-pyenv-on-bigsur-b4246987a548

タイトルとURLをコピーしました