Windows 10 Home でPython 3系を導入し、機械学習に必要なパッケージをインストール

PaizaのPython機械学習入門講座が、8月26日(日)まで無料だったとは...

f:id:ts0818:20180826203413p:plain

⇧  第二次とかの予定もあるのかしら? 

f:id:ts0818:20180826142111p:plain

⇧  とりあえず、受講した感想としては、機械学習するには事前に結構データとかを用意しないといけないようで、そのへんのデータを用意するのが大変そうな気が...。

 

blog.takuya-andou.com

⇧  少ないデータでも、2000枚ぐらいの画像は用意しないとマズイようです...オーマイガー!

 

 

というわけで、まずは、Windows上でのPython環境の構築にトライ。

Kubernetesの調査は...すみません、時間を見つけて調べていきたいと思います。

 

Windowsは除け者?

Pythonにおいても、環境構築に関してはWindowsには優しくないようです。で、Windowsの場合、

「WinPython」

qiita.com

「Anaconda」

qiita.com

⇧  のどちらかをインストールするのが手っ取り早いようです。

ただ、「Anaconda」に関しては、独自の環境になってしまい、Pythonのパッケージ管理ツールであるpipとで、パッケージの管理に差異が出てきてしまうようです。

  

pipenvの存在

Pythonでは、プロジェクトごとに異なるパッケージで構成された環境を複数用意したい場合に、「仮想環境」という機能を利用するそうです。

qiita.com

仮想環境を実現するための方法はpyenv, venv, virtualenv等いくつかあり、混乱のもととなっていましたが、Python 3.3 以降はvenvがPython標準機能として組み込まれています。

機械学習のためのPython環境構築 2018.05

それと、パッケージ管理ツールのpip。 

また、Pythonでは多くのパッケージをインストールすることで機能を追加していくことができますが、インストール・管理を支援するツールとして、Python 3.4 以降はpipが標準で組み込まれています。

機械学習のためのPython環境構築 2018.05

 

その2つを合わせたものが、

venvとpipを組み合わせて一層使いやすくしたソリューションとして、現在pipenvがPython.org推奨として提供されており、これからの環境構築はこれを使うのが最適と考えられます。

機械学習のためのPython環境構築 2018.05

⇧  上記サイト様によりますと、「pipenv」というものらしいです。 

 

まずは、ChocolateyでPython 3系をインストール

何はともあれ、「WinPython」「Anaconda」などを利用しない場合は、まず、Pythonをインストールするところからですかね。

いまのとこ、Pythonには、

で、2系か、3系が存在するのですが、2系のサポートが 2020年に終了することもあり、いまからPythonに取り組む場合は、3系で始めるのが間違いないかと。

 

qiita.com

⇧  上記サイト様を参考に構築していきたいと思います。なので、Visual Studio Codeというテキストエディターも利用していきますので、インストールされてない方は、

www.atmarkit.co.jp

⇧  上記サイト様を参考にインストールしてみてください。

Chocolateyを利用する場合は、Chocolateyのインストールもお忘れなく。

qiita.com

 

では、コマンドプロンプトを起動して、

choco list python

f:id:ts0818:20180825132742p:plain

python 3.7.0をインストールしたいと思います。

choco install python 3.7.0

f:id:ts0818:20180825133056p:plain

管理者権限でないと駄目なようなので、一旦、「N」でキャンセル。

f:id:ts0818:20180825133207p:plain

コマンドプロンプトを管理者権限で起動し、

choco install python 3.7.0

f:id:ts0818:20180825133405p:plain

f:id:ts0818:20180825133553p:plain

設定とかもいろいろやってくれる感じ?「Y」で。

f:id:ts0818:20180825134208p:plain

インストールできた~

f:id:ts0818:20180825134521p:plain

と思いきや、何かエラー。

f:id:ts0818:20180825134718p:plain

 どうやら、Chocolateyの使い方を誤っていたようです。

  choco install nodejs.install --version 0.10.35

https://chocolatey.org/docs/commands-install

 ⇧  上記サイト様によりますと、バージョン指定する場合は、

choco install {packageName} --version {Verison}    

としなければいけなかったようです。

また、バージョンをダウングレードする場合は、--forceオプションが必要みたいですね。

stackoverflow.com

 

Rubyなんかのように、複数バージョンをインストールしたい場合は、

  choco install ruby --version 1.9.3.55100 -my
  choco install ruby --version 2.0.0.59800 -my
  choco install ruby --version 2.1.5 -my

What is -my? See option bundling in how to pass arguments

https://chocolatey.org/docs/commands-install

⇧  でいけるようです。

Pythonも複数バージョンのインストール方法でやった方が良かったのかな?

バージョン指定で、再度インストールしたらば、

f:id:ts0818:20180825141949p:plain

駄目ですやん...、何か、--forceオプションか、upgradeして、みたい。

choco install python --version 3.7.0 --force --force-dependencies

おりゃ~、「Y」でEnter。

f:id:ts0818:20180825142302p:plain

さらに、「Y」でEnter。

f:id:ts0818:20180825142356p:plain

今度は、OKっぽいですね。

f:id:ts0818:20180825142732p:plain

コマンドプロンプトを起動し、インストールされたか確認。

note.nkmk.me

⇧  上記サイト様を参考に、Pythonバージョン確認。

python3 --version

f:id:ts0818:20180825143514p:plain

⇧  はい、パスが通ってないのかな~。

コマンドプロンプト、もしくは、Powershellで「refreshenv」と実行すれば良いらしい。

f:id:ts0818:20180825144521p:plain

駄目ですけど? 

f:id:ts0818:20180825144705p:plain

と思ったら、コマンドプロンプトを再起動して、

python --version

f:id:ts0818:20180825144906p:plain

でいけたっぽい。なんかPythonの仕様が変わったのかな?

ちなみに、環境変数にパスも追加されてました。たぶん、「refreshenv」で。

f:id:ts0818:20180825145527j:plain

 

pipenvのインストールと環境変数の調整

Pythonが使えるようになったので、pip(Python 3.4 から標準でインストールされる)を使ってpipenvをインストールしていきます。 

Python 3.7.0に同梱されたpipのバージョンは、10.0.1みたいです。

f:id:ts0818:20180825150056p:plain

では、pipenvをインストール。

pip install pipenv

f:id:ts0818:20180825150502p:plain 

f:id:ts0818:20180825150433p:plain

⇧  とりあえず、インストールできたみたい。

 

なんか、pipのバージョンを上げられるらしいので、上げときますか。 

blog.ikedaosushi.com

⇧  上記サイト様によりますと、Python関連のリリースが加速してるそうな...そんなに生き急がれてもね...

おりゃ~。

python -m pip install --upgrade pip

f:id:ts0818:20180825151142p:plain

f:id:ts0818:20180825151311p:plain

⇧  pipのバージョンが更新されました~。

 

Pythonの仮想環境をプロジェクトのディレクトリ毎にインストールできるように環境変数を追加します。

PIPENV_VENV_IN_PROJECT : true

f:id:ts0818:20180825151625p:plain

「変数名(N):」「変数値(V):」を入力し、「OK」。

f:id:ts0818:20180825151735p:plain

追加されました。

f:id:ts0818:20180825152044j:plain

pipenvのインストールできたようです。

f:id:ts0818:20180825162600p:plain

 

Visual Studio Codeの設定

Visual Studio Codeを起ち上げて、

まずは、Visual Studio CodePythonのための拡張機能である「Python Extension Pack」を追加します。

www.atmarkit.co.jp

⇧  現在は非推奨らしいので、後半でアンインストールします。

 

f:id:ts0818:20180825152616p:plain をクリックし、「Python Extension Pack」を検索します。

f:id:ts0818:20180825152542p:plain

そしたらば、インストール。

f:id:ts0818:20180825152751p:plain

 

続きまして、Pythonの仮想環境を、Visual Studio Codeで利用できるように設定します。

「ファイル(F)」>「基本設定(P)」>「設定(S)」を選択。

f:id:ts0818:20180825153848p:plain

プロジェクトディレクトリにできる「.venv」(Pythonの仮想環境。通常は、ユーザーのホームディレクトリ配下に作成されるらしい)までのパスを登録することで、Pythonの仮想環境が利用できるようになるようです。

"python.venvPath": ".venv"

f:id:ts0818:20180825154059p:plain

で、保存。

 

実際にプロジェクトを作成

適当な場所にプロジェクトのためのディレクトリを作成。

f:id:ts0818:20180825155122p:plain

作成したディレクトリをVisual Studio Codeで開きます。

f:id:ts0818:20180825160006p:plain

f:id:ts0818:20180825160131p:plain

 そしたらば、「表示(V)」>「統合ターミナル(I)」を選択。

f:id:ts0818:20180825160249p:plain

プロジェクトのディレクトリを基点として、PowerShellが起動するので、

f:id:ts0818:20180825160433p:plain

下記コマンドを実行。 

pipenv --python <Pythonのバージョン>

f:id:ts0818:20180825161418p:plain

⇧  はい、エラー。 PowerShellではパスが通ってないらしい?と思ったら、

f:id:ts0818:20180825162104p:plain

f:id:ts0818:20180825163903p:plain

パスは通ってるらしい。

仕方がないので、「pipenv --python path\to\python」で。その前に、Visual Studio Codeを再起動しておきます。(なんか再起動しないと、「"python.venvPath": ".venv"」の設定が反映されないっぽい?...地味にむっちゃハマりました。)

で、今度こそ。Pythonのパスはインストールされた場所に合わせてください。Chocolateyでインストールした場合は、「C:¥Python37¥python.exe」かな。

pipenv --python C:\Python37\python.exe

f:id:ts0818:20180825174034p:plain

⇧  「.venv」がプロジェクトのディレクトリに作成されました。

 

Visual Stduio CodeでPythonのプロジェクトを実行するための設定

f:id:ts0818:20180825174509p:plain をクリック。

f:id:ts0818:20180825174436p:plain

「構成の追加...」を選択。

f:id:ts0818:20180825174635p:plain

Python」を追加。

f:id:ts0818:20180825174747p:plain

「launch.json」ファイルが作成され、エディター上で開かれます。

f:id:ts0818:20180825174924p:plain

 

「"name": "python: Current File"」 のブロックに、

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}"
        },
        ...省略
        

下記のように、pythonのパスの設定を追記します。

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "env": {
                "PYTHONPATH": "${workspaceFolder}"
            }
        },
        ...省略
        

 

実行

そしたらば、

f:id:ts0818:20180825180510p:plain をクリックで、エクスプローラーに戻って、

f:id:ts0818:20180825180449p:plain

f:id:ts0818:20180825180810p:plain をクリックし、適当なpythonのファイル(拡張子「.py」)を作成します。

f:id:ts0818:20180825180738p:plain

 で、いきなり、「Linter pylint is not...」 とか出てくるんですが...

f:id:ts0818:20180825181307p:plain

なんでも、

www.atmarkit.co.jp

⇧  上記サイト様によりますと、PythonにおけるLint機能を実装するpylint がインストールされてないとか。

lint とは、主にC言語ソースコードに対し、コンパイラよりも詳細かつ厳密なチェックを行うプログラムである。コンパイラではチェックされないが、バグの原因になるような曖昧な記述についても警告される。

lint - Wikipedia

「Linter pylint is not...」のところの「Install」をクリックすると、インストールが始まって、

f:id:ts0818:20180825195302p:plain

「Pipfile.lock」というファイルが無い場合は、作成されるようです。 

f:id:ts0818:20180825195453p:plain

「Pipfile」に「pylint」が追加されたようです。

というわけで、今度こそ、実行。「hello.py」が選択されてる状態で、デバッグで「python: Current File」となってる状態で、f:id:ts0818:20180825200206p:plainをクリック。

f:id:ts0818:20180825200058p:plain

コンソールが表示され、「Hello!!! Python」と表示されて、Pythonが動いたのが確認できました。

f:id:ts0818:20180825200357p:plain

 

機械学習に必要な定番ライブラリのインストールなど

Visual Studio Codeに導入した拡張機能の「Python Extension Pack」は、『Jupyter』も利用できるとありました。

f:id:ts0818:20180825200734p:plain

ただ、「Python Extension Pack」は、

www.atmarkit.co.jp

⇧  上記サイト様によりますと、利用が非推奨らしいので 、アンインストールします。

f:id:ts0818:20180826143224p:plain

「すべて」をクリック。

f:id:ts0818:20180826143306p:plain

 

そしたらば、「拡張機能」で「Python」と検索し、「Python」をインストール。

f:id:ts0818:20180826144348p:plain

続きまして、「拡張機能」で「Jupyter」と検索して、「Jupyter」をインストール。

f:id:ts0818:20180826143743p:plain

そしたらば、「拡張機能」のところの、f:id:ts0818:20180826144558p:plain をクリックし「インストール済みの拡張機能の表示」を選択。

f:id:ts0818:20180826144524p:plain

インストール済みの拡張機能が確認できます。

f:id:ts0818:20180826144810p:plain ⇧  これで、Visual Studio Codeで、PythonPythonのライブラリであるJupyterが利用できるようになったようです。

 

そしたらば、エクスプローラーに移動し、「表示(V)」>「統合ターミナル(I)」を選択。

f:id:ts0818:20180826145125p:plain

 

そしたらば、PythonのライブラリであるJupyterなどを、ターミナルからインストールするのですが、

totech.hateblo.jp

⇧  上記サイト様によりますと、Pythonの仮想環境にログインしてインストールする必要があるようです。

ちなみに、プロジェクトに「.venv」ってフォルダができてると思いますが、こいつが、Pythonの仮想環境らしいです。 

f:id:ts0818:20180826154607p:plain

で、ネット上だと、「pipenv shell」でPythonの仮想環境が起動できるってあったんだけど、ここでもWindowsPowerShell)の場合は対応してないのかは分からんですが、

f:id:ts0818:20180826155205p:plain

見事に機能しない、残念過ぎる。

 

qiita.com

⇧  上記サイト様によりますと、WindowsでPowerShelの場合は、Pythonの仮想環境ディレクトリの中にあるScriptsディレクトリの中の「activate.ps1」を実行すれば良いらしい。

f:id:ts0818:20180826155610p:plain

Pythonの仮想環境の起動。 

[Pythonの仮想環境ディレクトリ]\Scripts\activate.ps1 

f:id:ts0818:20180826160005p:plain

⇧  仮想環境に切り替わったようです。

 

そしたら、

totech.hateblo.jp

⇧  上記サイト様を参考に、データ分析用の定番ライブラリをインストール。

pipenv install jupyter numpy scipy pandas scikit-learn keras tensorflow matplotlib seaborn

f:id:ts0818:20180826160540p:plain

f:id:ts0818:20180826160655p:plain

f:id:ts0818:20180826160759p:plain

f:id:ts0818:20180826160826p:plain

f:id:ts0818:20180826160850p:plain

f:id:ts0818:20180826160934p:plain

f:id:ts0818:20180826161154p:plain

⇧  「tensorflow」が見つからんと。 error出たせいかは分からんけど、後続の「matplotlib」「seaborn」のインストール処理がされとらんのだが...

 

github.com

github.com

⇧  上記サイト様によりますと、2018年8月26日(日)現在、Python 3.7の場合、pipenvでインストールできるtensorflowは、wheel形式のものになってるらしい。

と思ったら、OS XMac)限定っぽいですね。駄目もとで試すも、

pipenv install --verbose https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.10.1-py3-none-any.whl

f:id:ts0818:20180826173133p:plain

f:id:ts0818:20180826173721p:plain

f:id:ts0818:20180826173852p:plain

はい、エラー。 

Windowsの場合、公式サイトの説明だと、

You must pick the mechanism by which you install TensorFlow. The supported choices are as follows:

  • "native" pip
  • Anaconda

Installing TensorFlow on Windows  |  TensorFlow

⇧  2018年8月26日(日)現在、pipenvでインストールできるとは書いてないんですよね、他のOSについても同じくって感じなんですが、皆さん、どういう根拠でpipenv使ってるのか分からず。

とりあえず、pipで。 

pip install --upgrade tensorflow    

f:id:ts0818:20180826175409p:plain

f:id:ts0818:20180826175505p:plain

⇧  インストールできたんですかね?

あと、「matplotlib」「seaborn」のインストール。

pipenv install matplotlib seaborn

f:id:ts0818:20180826180706p:plain

f:id:ts0818:20180826180731p:plain

f:id:ts0818:20180826180821p:plain

⇧  インストールはできたらしいけど、警告が。

github.com

⇧  上記サイト様によりますと、 

pipenv lock --pre --clear    

で、依存関係解決のキャッシュをクリアできるようです。

f:id:ts0818:20180826190200p:plain

f:id:ts0818:20180826190233p:plain

まったく変わっとらんのだが...pipenv、ネットで言われてるほど使えなくない?

 

とりあえず、インストールされたライブラリを確認。

pip list   

f:id:ts0818:20180826191058p:plain

f:id:ts0818:20180826191307p:plain

f:id:ts0818:20180826191344p:plain

f:id:ts0818:20180826191416p:plain

⇧  一応、インストールしようとしたライブラリは入ったっぽい。

 

Jupyter Notebookを使ってみる

たくさん、ライブラリをインストールしてしまったんですが、

www.datacamp.com

⇧  上記サイト様によりますと、Visual Studio Codeの場合は、拡張機能と、Python側で必要なライブラリをインストールすればOKとなっているので、 Jupyter Notebook自体は、おそらくライブラリとしては、Jupyterが入っていればOKかと。

使ってみますか。

エクスプローラーに移動すると、自分は更新を促されたので、「今すぐ更新」をクリックしました。表示されてなければ無視で。

でも、Visual Studio Codeの再起動はしたほうが良いかも。

f:id:ts0818:20180826193014p:plain

f:id:ts0818:20180826193557p:plain

f:id:ts0818:20180826193644p:plain

そしたらば、「Hello.py」を編集。

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)
plt.plot(x, np.sin(x))
plt.show() 

f:id:ts0818:20180826194836p:plain

ソースコードの先頭行に 、

#%%    

追記することで、「Run cell」というリンクが表示されるので、クリックすると、

f:id:ts0818:20180826195334p:plain

選択肢が表示されます。今回は、初回なので、「Start a new Notebook」を選択。

f:id:ts0818:20180826195535p:plain

ファイアーウォールの警告が出たら、「アクセスを許可する(A)」で。

f:id:ts0818:20180826195724p:plain

 結果が表示されました。It’s Jupyter NoteBook!

f:id:ts0818:20180826195926p:plain

ブラウザ(Chromeのみ対応?)上で表示 するには、ターミナルで、プロジェクトのPythonの仮想環境にログインした状態で、

jupyter notebook

を実行。

f:id:ts0818:20180826200614p:plain

f:id:ts0818:20180826200842p:plain

サーバが起動して、ブラウザと接続されるようです。

f:id:ts0818:20180826201017p:plain

サーバを止めるときは、Visual Studio Codeのターミナルで、Ctrl + Cで。

f:id:ts0818:20180826205921p:plain

 

とりあえず、Jupyter Notebookを利用するとこまでチャレンジしてみました。相変わらず、Windows利用者にとってPythonを実装するには、優しくない気がしました。

Windowsの場合、Virtual Boxなどで仮想マシンを作成して、Linux環境を構築してPythonを始めるのが良さそうですかね。

 

Pythonの最新情報については、

cocodrips.hateblo.jp

⇧  上記サイト様が詳しそうです。な、なんと、Python 3.8が既に出そうな感じらしいですね。

 

時間があるときに、tensorflowを試してみたいですね。

今回は、このへんで。