結論
- jupyterが参照しているパスには要注意
- Python 3.8 でGDAL,OpenCV両方インストール可能
前提
- Ubuntu 20.04.3LTS
- Anaconda3
- リモートサーバーにアクセスするため、PuTYYのコマンドラインを使用
起きた事象
conda create -n '環境名' anaconda
でAnaconda上に仮想環境を作りそこにGDALとOpenCVをインストールするため、下記コマンドを入力。
conda install -c conda-forge opencv
conda install -c conda-forge gdal
するとconflictエラーで二つのライブラリがインストールできない。
やったこと
pythonのバージョンを確認
下記で確認できます。
conda info
確認したところpython3.9でした。
下記サイトを見ているとpython3.9版のGDALは用意されているのでインストールできるはず。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal
gdalからinstall
仮想環境をpython3.8で作り直しgdalからinstallしたところ問題なくインストール完了できました。
(時系列は前後しますが、pythonの他のバージョンでもGDAL,OpneCVのインストールを試みましたがconflictしなかったのは3.8のみでした。)
下記でjupyterをブラウザで開いて動作確認を行いました。
(仮想環境内で) jupyter notebook
動作確認はnotebook上で
from osgeo import gdal
で可能です。
何もエラーが出なければ問題なくインストールされています。
しかし No module… のエラーを確認。。。
念のため下記でGDALが入っているかを別方法で確認しました。
conda list gdal
どうやら入っていなさそう。
ではさっきinstallできたのは何なのか。。。
問題はjupyterが参照するパス!
下記サイトを参考にjupyterのパスを確認してみました。
https://qiita.com/kashi1mochi/items/d640098104b643abd466#%E6%A6%82%E8%A6%81
!which jupyter
jupyter パスは/home/ubuntu/jupyterとなっていて、そもそも仮想環境内でjupyterが使えていないことに気づきました。
たしかに仮想環境を作った後にはjupyterを入れていない、、、
コマンドラインでgdalの場所を参照してみるとjupyterの参照先と全然違うところに入っていました。そら動かんわ。
gdal list
# packages in environment at /home/ubuntu/.conda/envs/(環境名):
#
# Name Version Build Channel
gdal 3.3.0 py38h507a4fd_1 conda-forge
libgdal 3.3.0 h679344c_1 conda-forge
```
そこでjupyterを仮想環境にインストールしところjupyter notebook上でGDALをimportできました。
正しいjupyterの位置はここでした。
```
/home/ubuntu/.conda/envs/(環境名)/bin/jupyter
```
### 参考
Anacondaで仮想環境を作るときにpythonのバージョンを指定する方法(v3.8の場合)
```:@PuTTY
conda create -n '環境名' python=3.8 anaconda
```