1. sakaeda11

    Posted

    sakaeda11
Changes in title
+MacでのPython環境構築
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,105 @@
+真面目に開発環境を用意する場合はdockerを使うべきだけど、
+手元でサクッと色々試すための環境も作りたい。
+その上でも
+・python自体のバージョンを切り替えて使いたい。(主にv3.6を使いたい)
+・ライブラリを切り替えて使いたい。
+という2つの目的を満たす形で環境を作りたい、という場合の手順メモです。
+
+##今回利用するツールの説明
+**homebrew**
+言わずと知れたmacのパッケージマネージャ
+(ほぼデファクトスタンダードなものにもかかわらず、個人?が運用しているというのが、自分的には微妙、、なんだけど、他に良いものも見つからないので仕方ない。)
+
+**pyenv**
+python自体のバージョンを切り替えるためのツール
+>似た名前のものにpyvenvとは別物。pyvenvはdeprecatedで後述のvenvを使うように書かれている。
+
+
+**venv**
+python自体に組み込まれている仮想環境作成ツール
+もともとvirtualenvという独立したツールだったが、python3.3から組み込まれた
+
+
+#まずはhomebrewを入れる
+macにhomebrewがまだ入っていない場合、インストールする
+https://brew.sh/index_ja にあるインストール方法でインストールします。
+
+```
+/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+```
+
+#pyenvをインストールする
+python自体のバージョンを切り替えることができるツールであるpyenvをインストールする
+
+```
+brew install pyenv
+```
+
+インストールしたらパスを設定しておきます
+
+```:bash_profileへの設定。初回は直接実行もしておく。
+echo 'export PATH="$HOME/.pyenv/shims:$PATH"' >> ~/.bash_profile
+export PATH="$HOME/.pyenv/shims:$PATH"
+```
+
+インストール後
+`pyenv install --list`
+で利用可能なpythonの一覧が表示されます。
+
+
+
+
+#macとpyenvでのzlibエラー対応
+pyenvを利用しようとすると、zlibに関するエラーが発生するのでhttps://qiita.com/zreactor/items/c3fd04417e0d61af0afe
+にかかれているように以下のコマンドで対応する
+
+```
+sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
+```
+
+#利用したいpythonバージョンをインストール&切り替える(3.6.8を利用する場合)
+```
+pyenv install 3.6.8
+pyenv global 3.6.8
+```
+
+#venvでの環境切り替え
+```
+python -m venv [環境名]
+```
+で[環境名]に以下のようにディレクトリが作成されます
+
+```:[環境名]ディレクトリ以下の構成(抜粋)
+bin/
+ activate :この環境を利用するためのスクリプト
+ pip :この環境用のpip
+ python :pythonの実態へのリンク
+include/
+lib/ :この環境のpipでインストールしたライブラリはこの下に置かれます。
+pyenv.cfg
+```
+
+ライブラリもこの下にインストールされるので、他の環境を汚さずに操作できるようになります。
+
+```
+source [環境名]/bin/activate
+```
+でこの環境の利用モードになります。
+
+ここで
+
+```
+python --version
+```
+
+とすると、venvで環境作成したときのバージョンになります。
+
+なお、上記環境利用状態から出る場合は以下のコマンドです。
+
+```
+deactivate
+```
+
+
+
+ガッツリ環境を用意する場合はdockerを使いましょう。