Mooの技術メモ

技術的なメモ中心。

AnacondaからPipenvに乗り換えてArcGIS API for Pythonをインストールした。

Anacondaを使っていたが大規模な組織の利用は有償化されたとのことでPipenvに乗り換えた話。

Anacondaが有償になっていた

転職して以降全くと言っていいほどコーディングする機会がなくなり、Pythonに関する情報もほとんど入ってこなくなったのだが、どうやらAnaconda(正確にはAnacondaパッケージリポジトリ)が200人以上の規模の組織で利用する際等は有償となっていたらしい。 Qiitaに詳しい情報をまとめてくれている記事がある。

個人的に使う分には全く問題ないが、仕事で使うことになった場合(あるのだろうか…)の代替は探しておきたい。ということで、調べたらPipenvを使うと良さそうなことが分かったので環境構築時のメモを残しておく。

といっても内容はほとんどが参考にした以下のブログと同じだ。

qiita.com

ただし、本稿では、加えて以下を行った。

ArcGIS API for PythonEsriが提供するWeb GISにおいて、タスクの自動化や解析に利用できるAPIだ。

なお、OSはWindows 10 Proを使っている。

Anaconda(Miniconda)のアンインストール

自分の環境にはMinicondaがインストールされているので、以下の手順でアンインストールした。anaconda-cleanを使うとアンインストールした後に残ってしまう設定ファイルを消してくれる。

  1. Anaconda Powershell Promptで以下のコマンドを打ってanaconda-cleanをインストール
    • conda install anaconda-clean
  2. anaconda-cleanの実行
    • anaconda-clean
  3. コントロールパネルからMinicondaをアンインストール

公式からPythonをDL、インストール

説明不要だと思うので公式サイトのリンクだけ貼って割愛する。今回は最新の3.9.1をインストールした。

www.python.org

Pipenvのインストールと仮想環境作成

  1. Powershellで以下コマンドを打ってPipenvをインストール
    • pip install pipenv
  2. テスト用のプロジェクトディレクトリを作成し、ディレクトリを移動
  3. 仮想環境の作成
    • pipenv install

以上で仮想環境の作成が完了し、プロジェクトディレクトリ内には以下のファイルが作成される。

  • Pipfile
  • Pipfile.lock

前者ではプロジェクトでインストールされたパッケージが管理され、後者では依存関係やバージョンが管理されるようだ(参考)。condaでいうとpinnedファイルみたいなものかな。

仮想環境の保存先をデフォルトから変更

ここで作成された仮想環境がどこに保存されているのか知りたくなったので以下コマンドで調べた。

  • pipenv --venv

デフォルトだと以下のディレクトリに格納されるようだ。

  • C:\Users[ユーザー名].virtualenvs

環境をいくつも作成するとストレージを圧迫するので、Dドライブに作成するようにしたい。

以下公式ドキュメントを見ると環境変数を設定すれば任意の場所に環境の保存先を変更できるようだ。

pipenv.pypa.io

ドキュメントに従い、Windows環境変数を以下画像のとおり設定した。

f:id:hiromoooo:20210213134530p:plain

f:id:hiromoooo:20210213134707p:plain

上記の方法の場合、特定のディレクトリに作成した環境が全て保存されることになるが、プロジェクトディレクトリの配下に作成するように設定することもできるようだ。その場合、環境変数PIPENV_VENV_IN_PROJECT、値をtrueに設定する。

仮想環境の再作成

以下コマンドで一度作成した環境を削除する。

  • pipenv --rm

pipenv installで環境を再度作成し、pipenv --venvで保存先を確認する。

f:id:hiromoooo:20210213135749p:plain
環境の再作成

f:id:hiromoooo:20210213135816p:plain
作成された環境の保存先の確認

ちゃんと環境変数で指定した保存先に作成されているようだ。

ArcGIS API for Pythonのインストールと動作確認

これでパッケージをインストールする準備も整ったので、ArcGIS API for Pythonをインストールできる。以下のコマンド一発で終了だが。

  • pipenv install arcgis

f:id:hiromoooo:20210213142301p:plain
ArcGIS API for Pythonのインストール

ArcGIS API for Pythonのドキュメントも、以前はなかったpipenvでインストールする方法が記載されていた。

developers.arcgis.com

インストールが終了したら環境に入って、Jupyter Notebookを起動して動作確認する。環境には以下のコマンドで入ることができる。

  • pipenv shell

f:id:hiromoooo:20210213154424p:plain

Jupyter Notebookを起動してマップを表示する。

  • jupyter notebook

以下のコードでマップを表示させることができる。

from arcgis.gis import GIS
my_gis = GIS()
m = my_gis.map()
m.basemap = "topo-vector"
m

以下のGIFのような感じでマップが表示されればOKだ。

f:id:hiromoooo:20210213161624g:plain

Pipenv使ってみた所感

個人的には、慣れの問題もあると思うが、condaの方が使いやすいという印象。condaはパッケージをインストールする際に、インストールされる依存パッケージが列挙されて各バージョンも確認できたのだが、それが表示されないと妙に不安になる。また、fastaiなど他にも利用したいライブラリでcondaの利用が推奨されているものがある。

ただ、Anacondaもわけわからん挙動を示したり、Anacondaのレポジトリ内にないパッケージもあったりしたので、一長一短だろうか。

しばらくはPipenvを使っていこうと思う。