日記

のみろぐ

主に競プロ日記です

WindowsでGraphillionの環境構築

はじめに

  • これを参考に環境構築していく
  • 詰まった部分が多かったのでメモ。
  • 結局どういう手順を通るのが最適なのかわからないのでやったことを全部書いた。読みづらい。
  • もっと簡単にインストールするする方法があったら教えてほしい。

モチベーション

  • 組み合わせ爆発のおねえさんを救うことができる。
  • 動画では10×10の組み合わせの数え上げに25万年かかってるけどGraphillionを使えば一瞬で終わる。かなり古い動画だけど今更使うの?時代遅れじゃない?とか言わないでほしい。

環境

  • Windows 10
  • プログラミング系のソフトは何も入っていない状態(コンピュータをセットアップしたばかりなので)

1. Anacondaをインストールする

手順

  1. windows用のAnacondaをダウンロードする。

  2. AnacondaのPATHを通してどこからでもPythonを使えるようにする。

2.Graphillionの実行に必要なツールをインストールする(これいらない)

  • WindowsではVisual C++ 2015 Redistributable Packagesをダウンロードする必要があるみたい。
  • 確かGraphillionは後ろでC++が動いてるから必要なんだと思う。
  • 結局後でアンインストールするのでインストールする必要はなかった。本当に必要ないかどうかはわからないが、こいつをアンインストールしてもGraphillionが動くのでたぶん問題ない。たぶん。
  • 一応手順を書いとく

手順

  1. ダウンロードをクリックすると「vc_redist.x64.exe」と「vc_redist.x86.exe」のどれをダウンロードするするかというチェックボックスが出てくる。

  2. x64は64ビット版でx86は32ビット版(この数字クソみたいにわかりづらいので何とかしてほしい)。

  3. このコンピュータは64ビットなので「vc_redist.x64.exe」を選択する。するとインストーラーがダウンロードされる。

  4. インストーラーを実行するとセットアップが完了する。

3. Graphillionをインストールする(これが大変)

手順(これが理想らしいけどこんなスムーズに進まなかったんだけど)

  1. ソースコード(tar.gz または zip ファイル)を https://github.com/takemaru/graphillion からダウンロードする
  2. アーカイブを展開し、ソースコードディレクトリ(setup.py があるディレクトリ)に移動する
  3. python setup.py build を実行してビルドする
  4. (任意) python setup.py test -q でテストを行う
  5. sudo python setup.py install を実行してインストールする

僕がたどった手順

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
  • どうやらMicrosoft Visual C++ 14.0ってやつが必須らしい。とりあえず表示されたURL(https://visualstudio.microsoft.com/downloads)にアクセスする。
  • そのページでは、Visual Studio 2019のダウンロード画面が表示される。これをダウンロードしろってことか?よくわからんがこれをダウンロードすればpython setup.py buildを実行するのに必要な周辺ツールが全部インストールされるんだろう。ということでVisual Studio 2019をダウンロードする。
  • VS2019のインストーラーを実行するとオプションとして何かインストールするかを尋ねられる。なんかいろんなやつが表示されてよくわからんなぁ。そういえばさっきのエラーメッセージで「Microsoft Visual C++ 14.0 is required」って言われたしそれぽいやつをインストールするかぁ。ということで、表示された項目の中で「MSVC v140 - VS 2015 C++ ビルド ツール (v14.00)」が一番それぽいのでこの項目にチェックをつけてインストールを開始した(これが必要なのかどうかは最後までよくわからなかったけどたぶんいらない)。
  • さて、さっきエラーメッセージで言われたツール(VS2019)は入れたし完璧。python setup.py buildをもう一度実行する。すると、メッセージがたくさん出てきた。インストールが進んでるっぽい画面。お!これは成功したんじゃね?適当にツール入れるだけで成功させるとか天才かもしれんわ。
  • 失敗する。
  • メッセージはさっきとかわらずerror: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/だった。や、お前さっきツール入れたやん。なんでそこで失敗するねん。

  • よくわからんくなって適当にググってたらこの記事にたどり着いた。文章量多いけどとりあえず「Windows 10 SDK 」ってやつを入れないとだめらしい。僕は「MSVC v140 - VS 2015 C++ ビルド ツール (v14.00)」が必要そうだと思って入れたけど、本当に必要なのは「Windows 10 SDK 」だったみたい。ノリで環境構築を進めるとこういうことが起きる。VS2019の画面で新しいツールをインストールする画面に移動する。Windows 10 SDK を探すと同じような名前のやつがいくつか出てくるけど、とりあえず「Windows 10 SDK (10.0.17763.0)」を選択してインストールする

  • そして、python setup.py buildを実行する。成功してくれ~
  • 失敗する。
  • でもさっきまで出てたerror: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/は消えた。どうやらこの問題は解決したようだ。

  • 今回出たエラーは以下の通り。たぶんAnaconda3のファイルが開けないっていうエラーメッセージ。なので、c:\users\<name>\anaconda3\include\にパスを通す。なんか成り行きでc:\users\<name>\anaconda3\include\C:\Users\<name>\Anaconda3\ScriptsC:\Users\<name>\Anaconda3\DLLsにもパスを通した。これはグラフ列挙アルゴリズムのp152に書いてあったパス。必要かどうかわからんけど追加しといた。

c:\users\<name>\anaconda3\include\pyconfig.h(203): fatal error C1083: include ファイルを開けません。'basetsd.h':No such file or directory
  • そして、python setup.py buildを実行。4回目なのでそろそろ成功してくれ。

  • 失敗する。

  • 今回のエラーメッセージは以下の通り。rc.exeが実行できないらしい。なんじゃそのファイル。
LINK : fatal error LNK1158: 'rc.exe' を実行できません。
  • いろいろググるこの記事が出てくる。なんかrc.exeが競合してるらしい。この記事にはパスを変えて優先度を変えるみたいなことがかいてある。でも僕の環境には記事に書いてあるようなパスがそもそも存在しない...でも、競合という単語を聞いて一応思い当たる節があった。それは、たぶん必要だろうと思ってインストールしたいろんなツール。たぶん似たようなツールを入れたから競合を起こしてるんだろなぁと思ったので、とりあえずVisual C++ 2015 Redistributable Packagesでインストールしたものをアンインストールした。これはインストーラーをダブルクリックするだけで「アンインストールする」という選択肢が出てきたので3秒で完了。
  • そしてpython setup.py buildを実行する。5回目だぞ。わかるよな?そろそろ空気読んで成功してくれ。
  • 失敗する。
  • エラーメッセージはさっきと変わらずrc.exeが実行できないというもの。うーん、なんでだろ。
  • ググりまくると、この記事が出てきた。僕が知りたいことドンピシャじゃん。神か?

  • やることは、あるフォルダにあるrc.exercdll.dllを別のフォルダに移動させることらしい。

  • 僕の場合はC:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64にあるrc.exercdll.dllC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\binにコピーした。
  • そしてpython setup.py buildを実行する。6回目の挑戦。頼む~。成功してくれ~
  • 成功~
  • 手順3まで終了したので、次は手順4のpython setup.py test -qを実行する。任意らしいけど一応やっておく。そんで、これも成功する。
  • 手順5はsudo python setup.py installの実行らしいが、cmdではこれを実行できない。sudoが存在しないって言われる。なので、python setup.py installを実行する。成功する。やったぜ!!
  • これでインストールのすべての手順が終了した。2,3時間くらいかけてしまった。疲れた。

使ってみる

  • NetworkXとMatplotlibを入れた。任意らしいけど、チュートリアルで使うらしい。本当に必要かはよくわからんがとりあえず入れておいた。
pip install networkx
pip install matplotlib
from graphillion import GraphSet
import graphillion.tutorial as tl
GraphSet.set_universe(tl.grid(10, 10)) # 10×10のグリッドをセットする
paths = GraphSet.paths(1, 121) # グリッドの左上と左下を指定してパスを探索する
paths.len() # パスの総数を出力する。1568758030464750013214100と出力されるはず
  • 動画と同じ結果が出力されたのでGraphillionをちゃんと動かせてるみたい。やったぁ