主にこちらの記事を参考にさせていただきました。
ポイント
- pythonからpipだけでは完結しない
- まずwindowsでターミナル操作するためMsys2が必要
- Msys2のバージョン管理ソフトPACMANを使ってcairoをインストール
- pycairo-pythonバインディングをDLして手動でpip
- igraphモジュールをDLして手動でpip
Msys2のインストール
- https://www.msys2.org/
- インストーラーをダウンロードしてインストールするのみ
参考
Msys2でPACMANを使ってcairoをインストール
Msys2はインストールすると、似たようなアイコンが複数できてどれを起動すればいいのか迷った・・・。
MSYS2 MSYSというので良いのだと思う。(誰かそれぞれのアイコンの意味を教えてください)
Msys2を起動して、次のようなコマンドを打つのみ。
pacman -Syu #pacmanの更新
pacman -Sy mingw64/mingw-w64-x86_64-cairo
参考
pycairo-pythonバインディングをDLして手動でpip
Msys2を使った操作は前節で終わりで、ここからはPowerShellを使った操作になる。
cairoとpythonのバインディングのために、Python拡張のWindowsバイナリをインストールせねばならない。コンパイルが自力でできる人ならば、ソースコードからコンパイルして自力でバイナリを作ればよいが、それができない人のために非公式でバイナリを配布している方がいらっしゃるのでそちらの力をお借りする。Christoph Gohlke ありがとうございます。
私がアクセスしたときはhttpsの証明書が切れていて、Chromeの「安全ではないサイトにアクセスしようとしています」という警告にビクイクしながらダウンロードしました。
上記のサイトでpycairo含む様々なバイナリが配布されている。ページ内検索で「pycairo」を検索して目的のバイナリを探す。
- pythonのバージョンが3.11なら cp311 という文字列が入っているもの
- windows 64bitならamd64という文字列が入っているもの
- 上の両方の条件を満たすものがダウンロードすべきもの
- 自分の場合は pycairo‑1.21.0‑cp311‑cp311‑win_amd64.whl でした
バイナリをダウンロードしたら、ダウンロードした場所に移動して、pipでインストールを行う。
PS>pip install .\pycairo-1.21.0-cp311-cp311-win_amd64.whl
#もしかしたら --user を最後につけたほうがよいかも?
igraphモジュールをDLして手動でpip
続いて、igraphをpipでインストールします。同じく https://www.lfd.uci.edu/~gohlke/pythonlibs/ からダウンロードします。
自分の場合は 「 igraph-0.9.11-cp311-cp311-win_amd64.whl 」をダウンロード。
PS>pip install .\igraph-0.9.11-cp311-cp311-win_amd64.whl --user
Processing c:\users\llshi\downloads\igraph-0.9.11-cp311-cp311-win_amd64.whl
Requirement already satisfied: texttable>=1.6.2 in c:\python311\lib\site-packages (from igraph==0.9.11) (1.6.7)
Installing collected packages: igraph
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
python-igraph 0.10.3 requires igraph==0.10.3, but you have igraph 0.9.11 which is incompatible.
Successfully installed igraph-0.9.11
ここで、python-igraphはigraph 0.10.3を要求するけれども、あなたは 0.9.11 ですというエラーが出てヒヤッとします。
しかし、なぜかわからないけれども大丈夫でした。
そのあとで、
pip install igraph
というコマンドも実行しましたが、必要だったかどうかは不明です。
pythonでigraphが使えるかどうか動作確認
pythonを対話型で起動します。
from igraph import *
まずはインポートします。面倒なのでigraphから全部です。
そして、有名なグラフを指定してplotします。
g = Graph.Famous('Levi')
plot(g)
Famous関数の中にほかにも Bull, Diamond, Petersen, Zachary など入れることができます。