Pipenvで再現環境を構築したかった(+α)

前々回の記事で,RICOH Theta Sを使ってスティッチング処理を行いました.

その動作環境を改善しようとして少し手間取ってしまったので,
備忘録も兼ねて,構築環境のPipfileと手間取りポイントをメモしておきます.

早速Pipenvファイルから晒していきましょう.

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
opencv-contrib-python = "==3.4.4.19"
opencv-python = "==3.4.4.19"
intel-numpy = "*"
numpy = "==1.15.1"

[requires]
python_version = "3.6"

はい,気になる点が3点ありますね.

  1. Opencv-pythonのバージョン古くない?
  2. なんでintel-numpyを入れるの?Anacondaにすれば?
  3. なんでintel-numpyが入ってるのになんでバージョン指定でnumpyを入れるの?

実はそれぞれに手間取りポイントがありました.

Q1: Opencv-pythonのバージョン古くない?
A: 最新版だとpipenv install opencv-pythonが出来なかったから. 
Opencv python”で検索すると,色々と記事が出てくると思います.
ですが,そのとおり実行すると色んな所からエラーが発生します.
(代表的エラーは下記のリンクをご参照ください..)

https://ja.stackoverflow.com/questions/46978/pip-%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%A8%E3%83%A9%E3%83%BC-command-python-setup-py-egg-info-failed

https://stackoverflow.com/questions/35991403/pip-install-unroll-python-setup-py-egg-info-failed-with-error-code-1

 

解決方法が説明されてはいるのですが,なぜか私の環境では解決出来なかったので,
Raspiで上手くできた例を参考にして,

pipenv install opencv-contrib-python==3.4.4.19
pipenv install opencv-python==3.4.4.19

として,古いバージョンを導入することで,動作させることができました.  

Q2: なんでintel-numpyを入れるの?Anacondaにすれば?
A: 高速に処理してほしいものの,Anacondaが好きになれないから.
ちなみに,Python3.6にしたのはintel-numpyを導入するためでした.
Python3.7だとインストールに失敗します.

 

Q3: intel-numpyが入ってるのになんでバージョン指定でnumpyを入れるの?
A: 指定しておかないと,後でnumpyインストール時に上書きされるから..
参考:https://github.com/pypa/pipenv/issues/3471

以上の詰まりポイントの結果,冒頭のPipfileになりました.
ソースコードも整理して,どこかでGithubにUpします.