Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

俺の環境構築 Xcodeのインストールからpipenvとpyenvで仮想環境構築し,Jupyter Notebookを使うまで

はじめに

よくmacでの環境構築方法を忘れてしまうので,メモ程度で書いておきます.流れとしては新品もしくは初期化状態からの説明を書いていくつもりです.

環境

MacBook Pro (2020), Catalina 10.15.7

Homebrewとは

macOS上でパッケージの管理をするシステムのこと.環境構築をする時や,パッケージのインストールなどに使う.

Xcodeのインストール

まずHomebrewをインストールする際に必要なXcodeからインストールします.以下のコードをTerminalで実行するだけでインストールされます.

$ xcode-select --install

たまに原因不明(おそらくmacOSとXcodeのヴァージョンの不一致)で上手くXcodeをインストールできない時があり,下記のようになるが,,,

$ xcode-select --install
xcode-select: note: install requested for command line developer tools

この場合は↓の記事で解決方法を書いたのでそれを参照してください.
Xcodeをインストールできなかった時の対策

Homebrewのインストール

以下のコードをTerminalで実行する.

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Homebrewのパッケージのインストール

$ brew install pyenv      # pyenvパッケージのインストール   
$ brew install pipenv     # pipenvパッケージのインストール

pipenvとpyenvでの環境構築

まずはpythonのインストール

$ pyenv install 3.8.2

3.8.2のところは自分の入れたいpythonのヴァージョンを指定してください.3.9.0だとPytorchが入らなかったので以前のパソコンで使っていた3.8.2を入れました.

シェルの設定

macOSはCatalinaからデフォルトのシェルはzshになっているので.zprofileに書き込みます(ちなみにbashでもできる).

$ nano ~/.zprofile    #.zprofileを開くコマンド

下記の内容をコピペして貼り付ける.

.zprofile
export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi

書き込んだら,control + x → y → returnで戻れる.
次に下のコマンドで先程書き込んだ内容を反映させる.

$ source ~/.zprofile

ディレクトリを作り仮想環境を作る

とりあえずディレクトリの名前をhogehogeとして作ります.

$ mkdir hogehoge

次にhogehogeに移動する.

$ cd hogehoge

pythonのヴァージョンを指定する.

hogehoge
$ pyenv local 3.8.2    #3.8.2の所は自分の使うpythonのヴァージョンを指定してください

pythonのヴァージョンを確認.

hogehoge
$ pyenv version
3.8.2 (set by /Users/ホームディレクトリ名/hogehoge/.python-version)

python 3.8.2の仮想環境を作る.

hogehoge
$ pipenv --python 3.8.2
Virtualenv already exists!
Removing existing virtualenv...
Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Creating a virtualenv for this project...
Pipfile: /Users/ホームディレクトリ名/hogehoge/Pipfile
Using /Users/ホームディレクトリ名/.pyenv/versions/3.8.2/bin/python3.8 (3.8.2) to create virtualenv...
⠏ Creating virtual environment...created virtual environment CPython3.8.2.final.0-64 in 547ms
  creator CPython3Posix(dest=/Users/ホームディレクトリ名/.local/share/virtualenvs/hogehoge--aKlzNkT, clear=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/ホームディレクトリ名/Library/Application Support/virtualenv)
    added seed packages: pip==20.2.4, setuptools==50.3.2, wheel==0.35.1
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

✔ Successfully created virtual environment! 
Virtualenv location: /Users/ホームディレクトリ名/.local/share/virtualenvs/hogehoge--aKlzNkT
Creating a Pipfile for this project...

上の様になれば上手くいってます.

仮想環境に入る

このコマンドで仮想環境に入ります.

hogehoge
$ pipenv shell
Launching subshell in virtual environment...
 . /Users/ホームディレクトリ名/.local/share/virtualenvs/hogehoge--aKlzNkT/bin/activate       
~/hogehoge:  . /Users/ホームディレクトリ名/.local/share/virtualenvs/hogehoge--aKlzNkT/bin/activate
(hogehoge) $  

一番下の行の一番左に(hogehoge)があれば仮想環境に入れてます.
ちなみに仮想環境を出るときはexitと打てば出れます.

pythonのライブラリのインストール

まずnumpyを入れてみる.

(hogehoge)
(hogehoge) $ pipenv install numpy
Installing numpy...
Adding numpy to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success! 
Updated Pipfile.lock (456e4b)!
Installing dependencies from Pipfile.lock (456e4b)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00

入っているか確認してみます.

(hogehoge)
(hogehoge) $ cat pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
numpy = "*"

[dev-packages]

[requires]
python_version = "3.8"

packagesのところを見るとnumpyが入ってることを確認.
こーゆー感じでライブラリを入れていきます.

Jupyter Notebookを使う

Jupyter Notebookの導入と立ち上げ

さっそくjupyter notebookをインストール.

(hogehoge)
(hogehoge) $ pipenv install jupyter notebook
Installing jupyter...
Adding jupyter to Pipfile's [packages]...
✔ Installation Succeeded 
Installing notebook...
Adding notebook to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (456e4b) out of date, updating to (b58be4)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success! 
Updated Pipfile.lock (b58be4)!
Installing dependencies from Pipfile.lock (b58be4)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00

上の様になれば成功です.
次にJupyter Notebnookを立ち上げます.

(hogehoge)
(hogehoge) $ jupyter notebook

立ち上げるとブラウザが開き下図が表示されます.右側に見えるNewをクリックしPython3を選んでください.
Screen Shot 2020-11-13 at 0.51.33.png

Numpyが使えるか確認してみる.
Screen Shot 2020-11-13 at 0.54.40.png

しっかり使えてます.これで一通り環境構築は終わりです.あとは自分の使うライブラリをインストールしていってください.終了のさせかたはググってください笑

最後に

初心者にもわかりやすく伝わるように書いたつもりです.なにか修正点や追記したほうが良いことなどがあれば教えて下さい.ちなみに自分はJupyter LabよりJupyter Notebook派です(一応どっちも入れてる).理由はコマンドでタブの移動ができるという点だけなんですけど.でもJupyter Notebookは開発が終わり,Jupyter Labに移行すると公式が発表してるらしいのでJupyter Labに切り替えた方が良いのかなと思ったりします.Jupyter Labの入れ方はググれば結構記事が出てくるので,Jupyter Labを使いたい人はそっちを参考にしてください.この記事のpythonのライブラリのインストールまでは手順は一緒で大丈夫です.

環境構築に関しては@gabe-dsに色々教えてもらったり,手伝ってもらったりしたので,こっちのqiitaも読んでみてください.Mac系の便利な記事があります.

おまけ

コマンド一覧

$ pyenv install x.x.x    # 任意のpythonのヴァージョンを入れる
$ pyenv global x.x.x    # system全体のpythonヴァージョンを変更する
$ pyenv local x.x.x    # pythonのヴァージョンを指定する
$ pyenv version    # ディレクトリで使用しているpythonのヴァージョンを確認する
$ pyenv versions    # ディレクトリで使用できるpythonのヴァージョンを確認する

ライブラリを一気にインストールする

$ pipenv install numpy pandas matplotlib ...

上の様に一括でインストールできるが,Jupyter Notebookの様に間にスペースが入るやつを入れると失敗するので気をつけてください.

毎回pipenv shellをしないでディレクトリ移動時に自動で仮想環境に入る

.zprofileに下のやつを書き込んでください.すると毎回自動で仮想環境に入ってくれます.

.zprofile
# run pipenv shell automatically
function auto_pipenv_shell {
    if [ ! -n "${PIPENV_ACTIVE+1}" ]; then
        if [ -f "Pipfile" ] ; then
            pipenv shell
        fi
    fi
}

function cd {
    builtin cd "$@"
    auto_pipenv_shell
}

auto_pipenv_shell
bobi
自分でしたことや習ったことを気分で書いていく
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away