Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

pipenv で詰まった

まず Mac を使っているので、brew で作られる環境と pip で作られる環境が変に同居するのが面倒なのだろう。brew で入れた方の python を消すという話もみつかったが、多くのライブラリが依存しているので、それは望ましくない。むしろ、python と pipenv までは brew で入れて、それ以降を pipenv で管理するというのがよさそうだった。参考:Mac OS環境にPython開発環境を構築する私的解(brew+pipenv+pyenv)(2020年11月版) - shine-Notes ←これと一緒

pipenv install pkusegRuntimeError: Failed to lock Pipfile.lock! し続けるというので困った。pipenvでLockingが無限に終わらないとき #Python - Qiita に書かれている方法で lock を回避しようとしたが、Pipfile の書き方が悪かったのでエラーになってしまい、Pipfile の書き方を調べているうちに次段落の根本的な解決に至ってしまった。pip install pkuseg するとそれ自体は成功するのだが、スクリプトを実行した時に、ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject となってエラーになった。pipenv でインストールした numpy との整合性が取れていなかったのだろうか?Pandas も使っているのでこのまだopenな問題にぶち当たったのかもしれない→NumPy 2.0.0 on Python 3.12 causes binary compatibilty issues with numpy.dtype for pandas 2.1.1 · Issue #26710 · numpy/numpy · GitHub問題になってる pkuseg が3.8までは安定的に動くという情報が、中国語のQAサイトに記載されていたり、昔は動いていたスクリプトだったり、そもそも Python 3.12 を使っていることによる問題が大きい気がしたので、Python のバージョンを下げて再挑戦することにした。

というわけで pipenv --rm して、 pipenv --python 3.8 してから各種インストールをpipenv でやればうまく行った。

numpy についても Pipfile.lock を確認すると 1.24.4 になっていたようで 『ValueError: numpy.dtype size changed, may indicate binary incompatibility. ...』のエラー - めも で報告されていた問題も回避されているようだ。

なんかほぼ結果論で、何が問題だったのかがイマイチ不明なのが気になるが、同じ問題にぶち当たる人がいるかもしれないので書いておく。僕は基本的にはなんでも最新のものを使おうとしてしまうのだけど、たまにはこうやって古めの環境を作る必要があるのだなぁという学びがあった。