Skip to content →

pipenvをRaspberry Piでやる時のTips

pipenv logo is licensed under MIT license by Kenneth Reitz

こんばんは。こーでぃです。

pipenvって知ってますか?知らない人はググってください。Pythonのための最高のツールです。

Pipenv は、全てのパッケージングの世界 (bundler、composer、npm、cargo、yarnなどなど。) における最高のものをPythonの世界にもたらすことを目的としたツールです。

http://pipenv-ja.readthedocs.io/

さて、このpipenvを使った開発をRaspberry Piでやろうとした時に、いくつかつらいポイントがあったので、回避策とともにお伝えします。

殆どはマシンスペックがなさすぎることに由来するので、Raspi以外の他の状況でも使えるんものは多いんじゃないでしょうか。


Lockが限りなく遅い

どうしようもないです

少なくともリポジトリにlockfileを含めておいて、ラズパイでなるべくlockしないようにしましょう

pipenv installがTimeoutする。

https://github.com/pypa/pipenv/issues/401

解決策:

何やってるのかわからん

何やってるのかもわからないまま1時間も待たせられることも多々あると思います。

精神的な安心のために-vを使いましょう。verboseです。pipenv install -vです。

わざわざpypiを見に行く

Pipfileの冒頭に下のような一節が自動で追加されているがために、ラズパイ上でもpypiを見に行ってしまう。

わかりにくい名前ですが、Raspberry Piのためのpre-builtなwheelを提供しているsourceがあります。piwheels です。

で、Raspbianではシステムのpipですでにこれが有効になっているので、Pipfileから[[source]]セクションを削除すればこっちを使いそうなものですが、無理でした。以下のように書き換えます。

[[source]]の順番が大事です、こう書くことでまずpiwheelsを試し、次にpypiを試すようになります。

大量に並列処理を始める

何を血迷ったのか、pipenv installで15並列インストールとか始める時があります。1Ghzのマシンに何してんだ。

--sequentialを使いましょう。pipenv install --sequentialです。

これはまあどっちが速いかどうかは時と場合によると思うので、使い分けてくださいな。

まとめ

まとめると、

Pipfile[[source]]を書き換え、パッケージのインストールにはpipenv install -v --sequentialを使う


ということです。組み込みでもガチガチlockfileやっていきたいですね。

では、楽しいPythonライフを!

Published in Python RaspberryPi ソフトウェア