目的
- 自宅PCのAnacondaを再インストールしたらCythonの設定にてこずった
- 別のPCで設定するときの備忘録として作業手順を整理
環境
- CPU: Intel系
- OS: Windows 10 version 1909 64bit
- Anaconda: 3 (Individual Edition)
- Python: 3.71
- Cython: 0.29.17
作業手順
1. Anaconda
1-1. 本体のインストール
- 本家サイトからインストーラをダウンロード
- デフォルト設定でインストール
1-2. 初期設定
- base環境の設定(Anaconda Promptから2)
conda config --remove channels conda-forge
conda upgrade --all
conda clean --packages
1-3. パッケージのインストール
- 仮想環境の作成
conda info -e
conda create -n [仮想環境名] anaconda
- 仮想環境にパッケージを追加(コマンド一覧)
activate [仮想環境名]
conda list
conda install [パッケージ名]==[バージョン]
分類 | パッケージ |
---|---|
最初から入っているもの | numpy, scipy, sympy, pandas, matplotlib, seaborn, jupyter, jupyter_console, jupyterlab, cython, numba, xlwings, scikit-learn, scikit-image, statsmodels, pytest, yaml, h5py, requests など |
入っていないもの | opencv, tensorflow2, mayavi, pcl, pymc3, scikit-rf, fortranコンパイラ など |
- 仮想環境情報の書き出し
conda env export -n [仮想環境名] > [ファイル名].yaml
- 動作確認: [Anaconda3] から [Jupyter Notebook (仮想環境名)] を起動してみる。
2. Cython用の設定
2-1. Cコンパイラの選択
コンパイラの選択は、CythonのGithubサイトの解説にしたがった。
本当はAnacondaで完結させるためにmingwを使いたいのだが、Githubサイトに使わないように注意書きがあったので今回は断念3。また、Windows SDK C/C++ compiler は Python3.7 の情報がなかったので、これも敬遠。
ということで、今回は Microsoft Visual C++ をバージョンを合わせてインストールする方法を選択4。その場合の手順は以下の通り。
2-2. Pythonをコンパイルした Visual C++ のバージョンを調べる
- Anaconda Prompt で Pythonを起動する
(base) c:\Users\foo>python
- Pythonの詳細情報を表示する
>>> import sys
>>> sys.version
→ 3.7.7 (...略...) [MSC v.1916 64 bit (AMD64)]'
- 表示された情報(MSC v.1916)を以下のサイトの対応表と照らし合わせると、Python のコンパイルに使われた Visual C++ のバージョンが分かる5。
2-3. Cコンパイラのインストール
-
Microsoftのサイト に行って、該当するバージョンの「Build Tools for Visual Studio 2017」をダウンロードしてくる。言語を「Japanese」としてから「Download」ボタンを押す6。ちなみに、Python Japanサイトの説明とは若干画面が変わっていた。
-
ダウンロードしたexeファイルを実行すると、Visual Studio Installerがインストールされる。ここで改めてインストールするオプションを選ぶ。インストールするのは「Build Tools for Visual Studio 2017」。「Visual C++ Build Tools」にチェックボックスを入れてからインストールする7。Visual Studio Community 2017 も無料でインストールできるが、Cythonを動かす目的のためには不必要。Microsoftのダウンロードサイトにも、Cythonで使うのは「Build Tools for Visual Studio 2017」であることを示唆する表示がある。
-
Cythonが参照するファイル「vcvarsall.bat」が以下の場所にできていることを確認
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build
3. Cythonの動作確認
3-1. テストスクリプトの実行
- Jupyter Notebook を起動
- 以下のコードを入力して実行してみる
%load_ext Cython
%%cython
def cy_fib(n):
a, b = 0.0, 1.0
for i in range(n):
a, b = a + b, a
return a
%timeit cy_fib(100)
3-2. それでもうまくいかない場合の情報源
- @kei0425さんのサイト: 今回はお世話にならずに済んだが、この先のことが書いてある感じ。
- Oreillyの「Cython ―Cとの融合によるPythonの高速化」: 2015年の本なので若干古いがまだまだ使えそう。背景理解のため。
-
TensorFlow 1.0 は Python3.7 で動くようになった模様。TensorFlow2.0 は未確認。 ↩
-
必要なら管理者アカウントで実行(右クリック) ↩
-
Oreillyの本ではmingwでも行けるとのことだったが、Githubのほうにしたがった。ただし流し読み。 ↩
-
CPython は Visual C++ の長期サポート版でコンパイルされているので、Visual C++ を使えば問題ないとのこと。 ↩
-
文中の例で言うと、「MSC v.1916」は「Visual Studio 2017 version 15.9.11 14.16」に相当。 ↩
-
Microdoftアカウントが必要になるのでなければ作る。 ↩
-
実際にはチェックボックスを入れ忘れたので、インストールした後で「変更」した ↩