Help us understand the problem. What is going on with this article?

Python3系 環境構築

機械学習を勉強したいので、python始めます。
pythonに関して、無知の状態からスタートです。
色々調べながら、進めていきます。

作業環境

Mac OS X

python

私は、MacOSを使用しているので、python2系が標準搭載されています。
しかし、3系にしたいので(なんとなく)、新たにインストールします。

インストール

インストーラー(dmgファイル)を使用する
HomeBrewを使う
pyenv経由でインストールする

他にもあるかも!

※dmgファイル
Mac初心者必見!.dmgファイルとは?ソフト(アプリ)のインストール方法

※HomeBrew
homebrewとは何者か。仕組みについて調べてみた

特に理由はないですが、記事が多いので、
③で進めていきます。

pyenv

pyenvについて

  • 複数のバージョンを~/.pyenvに配置できる
  • バージョンの切り替えが簡単にできる

インストール

インストール方法は3つくらいありそう

①git clone を使用する
pyenv/pyenv-installer を使う(curlコマンド)
③HomeBrew でインストール

こちらの記事を参考にさせて頂きます。
Pyenvの使い方
pyenv-installer/README.rst

環境変数については、こちらが分かり易かったです。
PATHを通すために環境変数の設定を理解する (Mac OS X)

1 インストール

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

2 .bashrcの設定
.bash_profile と .bashrc は何が違うの?使い分けを覚える

$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ echo # 表示
$ export # 環境変数の表示、設定
$ eval # 文字列を評価して、凍結する
$ > # ファイルの上書き
$ >> # ファイルに追記

3 設定の再読み込み

sourceコマンドは、ファイルに書かれたコマンドを現在のシェルで実行するコマンドです。

$ source ~/.bashrc
$ pyenv -v
# pyenv 1.2.7

4 バージョンアップ
pyenvコマンド

$ pyenv install --list # インストール可能なリストの表示
$ pyenv install 3.7.0 # インストール
$ pyenv versions # pyenvでアクティブなバージョンを確認
$ python --version # 現在のバージョン確認
# Python 2.7.12
$ pyenv global 3.7.0 # グローバルで使用するバージョンの指定
$ pyenv local 3.6.1 # ローカル(カレントディレクトリ)で使用するバージョンの指定
$ python --version
# Python 3.7.0

pyenv localで指定したディレクトリの配下も同じバージョンになる模様

5 pythonは何処へ

$ export -p # 全てのパスの表示
$ pyenv which python
# /Users/ユーザー名/.pyenv/versions/3.7.0/bin/python
$ which python
# /Users/ユーザー名/.pyenv/shims/python

ルートディレクトリ・ホームディレクトリ・ログインユーザー

Mac買ったらまず3つのディレクトリを覚えよう

# ルートディレクトリに移動
$ cd /
# ホームディレクトリに移動
$ cd ~
$ cd $HOME
# 元いたディレクトリに戻る
$ cd -
# /
$ who # ログインユーザーの確認
$ whoami # ログインユーザーの確認
$ who am i # ログインユーザーの確認 + 詳細

パッケージ管理

パッケージ(ライブラリ)とは

パッケージマネージャがパッケージをインストールする仕組み

パッケージ、モジュール、ライブラリと様々な呼び方があります。

主に2つに分類されます。

  • 公式のパッケージ
  • サードパーティ製のパッケージ

公式のパッケージは、pythonをインストールした時点で、ついてきますが、
サードパーティ製のパッケージは、別途インストールする必要があります。

サードパーティ製のパッケージは、PyPIというサイトで配布されている様子。

RubyだとRubyGems、Node.jsだと、npm公式で配布されています。

パッケージ管理システム

pip

pipはpythonのパッケージ管理システムです。
Rubyのgemのようなものでしょうか?

使っているpythonに依存するような形になりそうです。

ここら辺は、難しいです。

以下に詳しく書いてあります。
pyenvが必要かどうかフローチャート

Python3.4から標準搭載されているようです。
Python3.4からpipが標準インストーラに!?

インストール

$ curl -kL https://bootstrap.pypa.io/get-pip.py | python

バージョン確認

$ pip -V

インストールしたパッケージの表示

$ pip list

パッケージマネージャー

pipenv

2018年のPythonプロジェクトのはじめかた

これまたRubyのgemと似ています。難しい。例えるべきではないかも...
Node.jsだと、yarn、npmのような感じ?(Node.jsほとんど分かりません)

brew経由でインストール

1 インストール

brew install pipenv

2 使うpythonの変更
.bashrcに書いてあるpyenvのパスをコメントアウトします。

$ python -V
# Python 2.7.15

システムのpythonを見ています。

3 pipenv install

$ mkdir PythonTest
$ cd PythonTest/
$ pipenv install requests

pip経由でインストールしなくても、使えました!

そして、Rubyの

gem install bundler

に似ています。

これによってPipfilePipfile.lockが作られます。
パッケージの依存管理できるようになります。

pip経由でインストール

1.インストール

$ pip install pipenv
$ pip list
Package          Version   
---------------- ----------
certifi          2018.11.29
pip              19.0.2    
pipenv           2018.11.26
setuptools       39.0.1    
virtualenv       16.4.0    
virtualenv-clone 0.5.1     
wheel            0.33.0   

pyenv localで指定したディレクトリにはpipenvが入っていません。

$ pip list
Package    Version
---------- -------
pip        19.0.2 
setuptools 28.8.0 
wheel      0.33.0 
$ pyenv local 3.7.0
$ pip list
Package          Version   
---------------- ----------
certifi          2018.11.29
pip              19.0.2    
pipenv           2018.11.26
setuptools       39.0.1    
virtualenv       16.4.0    
virtualenv-clone 0.5.1     
wheel            0.33.0

ディレクトリにある

.python-version

を見ているようです。

このファイルがあれば、versionのpythonを使う、無ければグローバルと設定されているpythonを使うようです。

書いてあるバージョンが、無いとエラーが発生します。

DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
setuptools (28.8.0)
You are using pip version 9.0.1, however version 19.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

pipのバージョンが違うと言っています。
システムのpythonを見に行っているのでしょうか?(調べていない)

2 pipenv install

$ mkdir PythonTutorial
$ cd PythonTutorial/
$ pipenv install requests

これでPipfilePipfile.lockが作られます。
パッケージの依存管理できるようになります。

気付いたこと

  • pythonのバージョン(pyenv)での依存管理。
  • pipenvでの依存管理。

ができる。

virtualenv

Pythonの仮想環境を構築できるvirtualenvを使ってみる

  • pythonの仮想環境を作れる
  • 名前を付けて、pyenvに登録できる

これまた便利です。パッケージの管理に何を使用するか悩ましいですね。
Docker等を用いる場合、さらに選択肢が広がりそうなのですが、用途によって必要最低限の構成にしたいです。

Anaconda

Anaconda で Python 環境をインストールする
Pythonの環境構築 on Mac ( pyenv, virtualenv, anaconda, ipython notebook )

Anacondaとは

Pythonのディストリビューション
名前がめちゃめちゃかっこいいので、気になっていました。

インストール

1 インストール

$ pyenv install --list
$ pyenv install anaconda3-5.2.0 # 結構時間かかります。

2 pyenvでanacondaを使用する

$ mkdir anaconda
$ cd anaconda/
$ pyenv versions
  system
  3.6.0
  3.6.1
* 3.7.0
  anaconda3-5.2.0
$ pyenv local anaconda3-5.2.0
$ python -V
# Python 3.6.5 :: Anaconda, Inc.

3 パッケージマネージャー

anacondaでは、pipではなく、condaというパッケージマネージャーを使用するようです。

anacondaではcondaが標準搭載されているようなので、いくつかコマンドを試してみます。

$ conda list # パッケージの一覧
$ conda install [name] # インストール
$ conda install [name]==x.x.x # インストール + バージョン指定

pip listと叩くと、普通に一覧が出てくるので、使っているので共存しているっぽいです。

anaconda使うのであれば、pipは触らないほうがいいのかな?
そもそもanaconda使う時点で、パッケージの追加をそんなにしないような...?

condaとpip:混ぜるな危険

Jupyter Notebook(iPython)

Jupyter Notebook(IPython)のインストールと始め方

anacondaをインストールすると、既に環境は整っているようです。

下記コマンドを叩くと、ブラウザが立ち上がります。

$ ipython notebook
$ jupyter notebook

ブラウザから、ファイルを生成できたりします。すごい!

iPythonとJupyter Notebookについては、おいおい学んでいこうと思います。

DockerでAnaconda

機械学習を勉強するには、Anacondaが良さそうなので、Anacondaを採用します。

そして、今Dockerも勉強しているので、使ってみます。

ベースイメージは、continuumio/anaconda3を使います。

Dockerfileとdocker-compose.yamlは以下を参考にしました。
Anaconda の JupyterLab を Docker で使う

その他参考にしたもの
データ解析・機械学習に最適の開発環境 JupyterLabに入門
JupyterLabのすゝめ
[docker] CMD とENTRYPOINT の違いを試してみた

$ docker-compose build
$ docker-compose up

http://localhost:8888 にアクセスすると、ログイン画面に行くので、トークンを入力します。

$ jupyter-lab

でも、実行することができます。

最後に

ひとまず環境周りを調べることができてよかったです。

pythonの基本的な文法も知らないので、以下のサイトで学んでいきます。
Python チュートリアル
Scipy Lecture Notes

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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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