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

Windows(M.S.)にPython3 (Anaconda3) を導入する(7つの罠)

はじめに

この記事はWindowsにpythn3(Anaconda3)を導入する際に、陥りやすい罠について2017年に記載したものです。2019年現在に想定できる導入時の各種画面は

Windows に Anaconda(python)を 2019年版

https://qiita.com/kaizen_nagoya/items/c05c0d690fcfd3402534

も合わせてご確認ください。

機械学習にpython

機械学習などでpythonを使う機会が増えてきた。
ソフトウェアの道具類(tool)の台本(script)でpythonが多かった。

Pythonを使った演習などを色々開催した。
受講いただいた方が、仕事場または自宅で自分の計算機に導入する際の、最大の関門がWindowsへのPythonの導入だった。

Anacondaがうまく入らないという方が何人かおみえになった。
その方々向けに記事を書き始めました。

また、機械学習用のソフトウェアでは、
Python2で動くプログラムと、Python3で動くプログラムがあり、
Python2をPython3へ変換するとよいかもしれないが、
Python2での動きを確認する必要があり、Python2が動く機材も確保したいという話もあった。

それらの場合には、ラズベリーパイかdockerをお勧めした。
次の課題は、Windowsにどうやってdocker の導入になった。

Raspberry PI

RaspberryPi なら初めからpython2もPython3も入っていて簡単。

当方でおすすめしたのは、Raspberry PIを使う方法。
pythonとは別に、Raspberry PIの演習も色々開催していた。

一番簡単なのはRaspberry PIでRaspbianを使う方法だった。
python2もpython3もRaspbianに入っていて、簡単に使い分けられる。

docker

dockerは、Linux, Windows, macOSなどの上でDebian系のUbuntuなどのLinuxが動く環境を簡単に構築する道具です。下のOSの設定にあまり影響を与えずに、複数の設定の異なるLinuxを同時に動かすことができるのが大きな利点です。
http://www.docker.com

docker hub

また、構築した環境や、作業の途中の状態をdocker hubに掲載して、多くの人と同じ環境で同時に作業できるのも利点です。

https://hub.docker.com

Anaconda 公式 docker

Anacondaの公式dockerがある。dockerさえ動けば、1行ですぐにanacondaが利用できる。
https://hub.docker.com/r/continuumio/anaconda3

導入の仕方は、OSのコマンド入力から

$ docker run -v /Users/administrator/Downloads/work:/home/work  -p 8080:8080 -it  continuumio/anaconda3   /bin/bash 

-v host:docker ファイル共有。docker上でhostと共有しているファイルは、docker hubに登録する場合には、別のフォルダに複写するとよい。

-p サーバ、ブラウザなど他の機材と通信する機能を動かす。

-it 最後に書くシェルを起動する。

言語処理100本ノック 2015(python) 動作確認docker環境構築
https://qiita.com/kaizen_nagoya/items/abaf3fd0198f9f557243

dockerで作業していれば、LinuxでもWindowsでもすぐに同じ操作ができる。

次にお勧めなのはdockerを利用する方法。
最初からpythonの入ったdockerを利用する。

今は、2つのうちのどちらか、あるいは両方をお勧めしている。

Raspberry PIのRaspbianと、dockerのubuntuは、どちらもDebian系のLinux.
ソフトウェアの導入にaptコマンドが使える。

量子アニーリングでも、pythonを使う。

docker(28) Openjij チュートリアルをdockerで
https://qiita.com/kaizen_nagoya/items/09a52b25d54091c8db6f

Macintosh

Macintoshだと標準でpython2が入っている。
最初は、pyenvをいれてからAnacondaを入れるのをお勧めしていた。
現在は、dockerでpython2、python3を別々に利用するのをお勧めしている。

そうはいっても、WindowsでもPythonを使いたいという方はおみえになる。
Windows にうまくPythonを入れられず、機械学習を諦めた方がいた。

それではと書き始めたのがこの記事。

2019年5月2日に、罠7を追記しています

目次

罠1 すでにPythonが入っている場合
罠2 [All Users] はシステム管理者のパスワードを知らないと進めない。
罠3 [Add Anaconda to the system PATH environment variable] は推奨されていません。
罠4 Windowsのコマンドプロンプトを起動して、pythonと打っても動いてくれない。
罠5 ディスクがいっぱい。
罠6 システムの設定、ソフトの導入が色々。
罠7 pythonプログラムに引数を渡す時の課題

Anaconda(python)をMS Windowsに導入する(罠7つ)。

dockerを入れる前に、pythonを使いたい方が、 WindowsにAnacondaを導入する際の罠を記録。

罠1 すでにPythonが入っている場合

Anacondaをアンイストールしなとうまく導入できないことをしばしばお目にかかりました。

「コントロールパネル」の「ソフトウェア」で「Python for windows」などをアンインストールしてください。

場合によっては、レジストリファイルを変更しないといけないことがあるかもしれません。10回インストールしなおして駄目だったら、Windowsの再インストールをお勧めします。

初めてAnacondaを導入する場合

AnacondaのURL[リンク]を押す。

https://www.anaconda.com/download/

接続しているOSによって、接続しているOSに必要な版を示してくれる。
適切なOSでなければ、Windows macOS Linuxのうち必要なOSを選ぶ。

anaconda.jpg

Pythonの版は3.6を選ぶ。(2017年)

「ゼロから作るDeep Learning」では3.6がお勧め。(2017年当時の記述です。当時のソースはそのまま動くはず。3.7でも大丈夫。)

ana2.jpg

ダウンロードディレクトリを見る

ana3.jpg

[ Anaconda3-4.4.0-Windows-x86_64 ]をダブルクリック

 ana4.jpg

[ 実行(R) ]

ana5.png

[ Next> ]

ana6.png

[ I Agree ]

ana7.png

今使っているユーザだけでよければ[ Just me ]が選択されている状態で[ Next > ]。

どのユーザでも使いたければ、[ All Users ]を選択する。

罠2[ All Users ]はシステム管理者のパスワードを知らないと進めない。

ana8.jpg

システム管理者のパスワードを知らなければ、[いいえ]で戻って[ Just Me ]に戻す。

ana9.png

Next>

ana7.5.png

[ Register Anaconda as the system python 3.6 ]のままで[ Install ]

罠3 [ Add Anaconda to the system PATH environment variable]は推奨されていません。

Pathを切ってしまうと、これまでのソフトや、古いPythonのソフトが動作しなくなるかも。また、別のPythonの版で試したい時、Anaconda以外で操作したいときに困ることがある。どちらがよいかは、何をしたいかによる。

1)これまでPythonを使ったことがない人。
2)複数の道具でPythonによるコマンドが装備されていない人。
3)これからも複数のPythonの版を並列で使うことがない人。
4)これから作ったプログラムを複数のPythonで試験して出荷することがない人。
Pathを切ってもよいのは、上記全てが当てはまる限られた人かもしれない。

anax.png
anax1.png

[ Next> ]

anax2.png

[ Finish ]ここまでで終了。

Windowsのメニューから、[ Anaconda3 ]の[ Anaconda Prompt ]を選ぶ。

anax3.png

Jupiter Notebookを選んでもよい。

手引きや教育用資料を作る場合はJupiter Notebookがお勧め。

anax4.png

罠4Windowsのコマンドプロンプトを起動して、pythonと打っても動いてくれない。

OSが他のPythonの版を必要としている場合には、その設定に影響を与えないため。

anax5.png

ここで慌てて、Autoexec.batなどを編集してしまうと、さらなる深みに嵌るかも。

罠5 ディスクがいっぱい。

ディスクがいっぱいだと途中で入らなくなる。1.9GB必要。
対策:ディスクのバックアップ(予備)を別のディスク等にとって、あまり使わないソフトウェア、データを削除する。

罠6 システムの設定、ソフトの導入が色々。

ディスクがいっぱいではなくても、いろいろなアプリケーションを追加削除しているうちに、システムの設定がくちゃくちゃになって動かないソフトがあれこれある。

導入途中で失敗したソフトの残骸が残っていると辛いことがある。また、同じソフトの複数の版があってもおかしな振る舞いをする。環境変数設定がちぐはぐだったり、不必要な設定が入っていたり。
対策:ディスクのバックアップ(予備)を別のディスク等にとって、OSの入れ直しをする。

Macintoshだとbrew, Debian/Ubuntu/Raspbianだとapt-getなどの整合性を確認して導入するソフトがある。Windowsも似たものがあるといいかも。

罠7 pythonプログラムに引数を渡す時の課題

罠6つで約2年過ごした。ある日、
「wikipediaからのページからリンク一覧を取得する方法」を動かしてみた
https://qiita.com/kaizen_nagoya/items/ef4a8d21ec98851d10a0

URLの一部をを引数で渡すプログラムを書き始めたら、WindowsのAnacondaでうまくいかない現象に遭遇した。

Python3: URLをコマンドライン引数で
https://qiita.com/kaizen_nagoya/items/fc095b0c580a35001ea7

pythonを付けて実行するとエラーにならないのに、実行ファイルにすると下記エラーが出る。

>wic.py hazop
Traceback (most recent call last):
  File "C:\Users\kaize\Downloads\wic.py", line 15, in <module>
    url = "https://ja.wikipedia.org/wiki/" + urllib.parse.quote(args[1].upper())
IndexError: list index out of range

解決するためには、下記にレジストリファイルを治す方法があるらしい。

WindowsでanacondaのPythonに引数が渡せない?
https://ja.stackoverflow.com/questions/40319/windowsでanacondaのpythonに引数が渡せない

レジストリファイルは、直したくない。何が起こるか分からないから。
Windowsではpythonをつけて動かすことにしている。

ふりかえり

わかったこと

AnacondaはPythonの有力な配布元だ。
AnacondaでPython3が利用できる。
Anacondaでコマンドが利用できる。
AnacondaでJupiter Notebookが利用できる。
WindowsでもAnacondaが導入できる。

わかっていないこと

どうしてAnacondaという名前なのか

p.s. 20190317追記
@jerrywdlee さん。からお知らせいただきました。

Kingdom: Animalia Animalia
Phylum: Chordata Chordata
Class: Reptilia Reptilia
Order: Squamata Squamata
Suborder: Serpentes Serpentes
Family: Pythonidae Boidae
Subfamily: Boinae
Genus: Python Eunectes
group Anaconda
生息地 ユーラシア大陸・アフリカ大陸 南アメリカ大陸

https://en.wikipedia.org/wiki/Python_(genus)
https://en.wikipedia.org/wiki/Anaconda

英語のWikiで調べると、上記の表のような関係。特徴としては、概念的にはAnacondaの方が下位。完全な包含関係ではない。Anacondaは大型である。生息地が違う。ソフトウェアの集合としてもAnacondaはそこそこいろいろ含んでいる、Pythonより下位概念の用語であるという感じで理解。

Photo By Wagnermeier - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=8981531 01-COBRA-SUCURI-3M-WAGNER-MEIER_MG_2458.JPG

よかったこと

Python3とPython2の環境を別々に利用できる。
自分の書いた記事で、一番Viewsが多い記事である。

一番よいねが多い記事は別。

改めたいこと

参考文献を強化

p.s. この投稿の元原稿は下記。こちらも順次改訂予定。
[リンク] https://researchmap.jp/jo055mfbh-2078500/#_2078500

参考文献(reference)

入門 Python 3, Bill Lubanovic ,‎ 翻訳 斎藤 康毅 ,‎ 長尾 高弘
https://www.amazon.co.jp/dp/4873117380/

Effective Python ―Pythonプログラムを改良する59項目
https://www.amazon.co.jp/dp/4873117569/

Windows環境にPython 3.5.1+numpy+scipy+αをインストール
https://qiita.com/kenichi-t/items/7319b3876ae7f0d3817c

docker でPython

言語処理100本ノックをdockerで。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f

Play with Docker でエラー
https://qiita.com/kaizen_nagoya/items/fbf054705bff725dbc25

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

dockerで機械学習 with anaconda(1)「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab
dockerで機械学習with anaconda(2)「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/3b80dfc76933cea522c6
dockerで機械学習 with anaconda(3)「直感Deep Learning」Antonio Gulli、Sujit Pal 第1章,第2章
https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32

dockerで機械学習(17) with anaconda(17)「PythonとKerasによるディープラーニング」 :Francois Chollet著
https://qiita.com/kaizen_nagoya/items/bce4fa73560370733ea2

Anaconda @ qiita

【決定版】WindowsでPythonを使って『機械学習』を学ぶための環境構築
https://qiita.com/yoshizaki_kkgk/items/1057ed4dcc36ed9be7f5

Pathを切ってしまうと、別のPythonの版で試したい時、Anaconda以外で操作したいときに困ることがある。どちらがよいかは、何をしたいかによる。

Anaconda: ビギナーズガイド
https://qiita.com/Scstechr/items/0793d7d01b9620bf47df

anaconda導入(red hat系?)
https://qiita.com/shama/items/0b5b3b91779bbd25118d

Anaconda で Python 環境をインストールする
https://qiita.com/t2y/items/2a3eb58103e85d8064b6

pyenvでAnacondaをインストールする方法
https://qiita.com/kazuhikoyamashita/items/ed5d8b94a902a2e89efa

MacにPyenvを使ってAnacondaを入れる
https://qiita.com/katzhide/items/527ef101d5067ee84416

pyenv @ Qiita

pyenvを利用してPython環境を整備する方法
https://qiita.com/kazuhikoyamashita/items/273692ccbdf8c0950a71

仮想環境 バージョン管理 まとめ Python
https://qiita.com/hedgehoCrow/items/0733c63c690450b14dcf

pyenvにおけるpythonインストールエラー対処法(BUILD FAILED)
https://qiita.com/cabbage/items/0b451ae324595cc54d22

python 3.7, 3.8

Python3.7の新機能
https://qiita.com/ksato9700/items/35a0bdc04693b3b09757

Python3.7.1の環境構築
https://qiita.com/Hams/items/ec862c5122d511ccfb92

Python 3.7のベンチマーク
https://qiita.com/seri/items/82f7276f2b9e9b78146f

Python3.7のmathの場所
https://qiita.com/yukimurashun/items/e5a932f389c4be0a6c53

WSL(openSUSE)にPython3.7.2をインストール
https://qiita.com/m_myo0/items/6b7b9252c33a99c76d0c

PyCharm + Docker + Python3.7の開発環境構築メモ
https://qiita.com/tomitz/items/722960b124600391f491

Raspberry Pi に Python 3.7.0 をインストールする
https://qiita.com/GuitarBuilderClass/items/d6d2798bebf7b916c5c6

Python 3.8 では空dictが小さくなる
https://qiita.com/methane/items/167a848e96146cddca78

Python3.8の新機能 (まとめ)
https://qiita.com/ksato9700/items/3846e8db573a07c71c33

Python3.8の新機能(1) - コンパイルしたバイトコードファイルの置き場所を指定できる
https://qiita.com/ksato9700/items/da8df4e01b8b77293dbf

Python3.8の新機能(2) - 代入式の導入
https://qiita.com/ksato9700/items/d37efc6982365e24f6af

背景(background)

「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」斎藤康毅オライリージャパン(2016)

で使うPythonを入れるなら、Jupyter Notebookもあるanacondaがお勧め。

dee.jpg

「ゼロから作るDeep Learning 2自然言語処理編」を読む前に読んで置くとよい資料とプログラム
https://qiita.com/kaizen_nagoya/items/537b1810265bbbc70e73

Pythonは、機械学習、道具類のコマンドなどあちこちで使われています。Raspberry Piでも初めから入っています。
MS Windowsでも、Mac OSでもLinuxでもお勧めです。今回はMS Windowsへ導入しましょう。
Anacondaは、Pythonに統計解析のライブラリやJupyter Notebookなどの便利な道具類をまとめて提供する配布元(distributer)です。
機械学習、深層学習(deep learning)の勉強にもお勧め。

[リンク]http://www.anaconda.com/download/

「ゼロから作るDeepLearning - Pythonで学ぶディープラーニング の理論と実装」のプログラムをWindowsで実行するのにうまくいかなかった方への伝言です。

文書履歴(document history)

ver 1.00 初稿 20171218
ver 1.01 参考文献追記 20180123
ver 1.02 参考文献追記 20180327
ver 1.03 「Pathを切るとよいかどうかは、何がしたいかによる。」を追記。
ver 1.04 Macintoshでdockerでpython利用を推奨 を追記 20180505
ver. 1.05 罠5つから6つに変更。他のPythonをアンインストール追記 20180828
ver. 1.06 docker で python 追記 20190120
ver. 1.07 言語処理100本ノックをdockerで。20190225
ver. 1.08 Anacondaの命名由来追記 20190317 朝
ver. 1.09 3.6, 3.7, 3.8 について記載。20190317 昼
ver. 1.10 Anacondaの写真追記 20190318
ver. 1.11 罠7 引数 追記 20190502
ver. 1.12 誤植訂正 20190509
ver. 1.13 下記->上記 誤記訂正 20190512
ver. 1.14 みだし2019追加 20190523
ver. 1.15 はじめに表現補正 20190525
ver. 1.16 見出し修正、目次追加 20190602
ver. 1.17 はじめに加筆 20190610
ver. 1.18 はじめに、機械学習にpython加筆 20190624
ver. 1.19 docker hub追記 20190719
ver. 1.20 はじめに加筆 20191003
ver. 1.21 量子アニーリング、openjij 加筆 20191205

このエントリーをはてなブックマークに追加

http://b.hatena.ne.jp/guide/bbutton

kaizen_nagoya
I'm a network designer.I work on TOPPERS SmallestSetProfile Kernel,MISRA-C, STARC RTL Design StyleGuide (Verilog-HDL),HAZOP,ISO/IEC15504(AutomotiveSPICE),ISO26262. I was an editor on ISO/IEC 15504.
https://researchmap.jp/blogs/blog_entries/view/81777/f691323917cc4ea12caf0b03b34c8ea0?frame_id=442673
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
No 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
ユーザーは見つかりませんでした