LoginSignup
4
1

More than 3 years have passed since last update.

python packaging の editable と develop mode のこと

Last updated at Posted at 2019-02-26

python パッケージのツールはdistutils, setuptools, pip, pipenv といろいろあって、用語が混乱してきたのでまとめてみた。

easy_install (setuptools)

  • easy_install -e の editable mode はバージョン解決をしてダウンロードするところまで。
    • パッケージ名指定で、pypi で名前解決する。URL不可。
    • editable mode での展開ディレクトリは明示的に指定しないといけない。
  • setup.py develop で symlink を使った install が行われる (egg-link)

pip

  • pip install -e の editable mode は setuptools の develop mode に相当
    • pypi での名前解決不可で、ローカルあるいは git (VCS) 管理の URL を使う。
      • (pip install git+https://.... みたいな)
    • 展開ディレクトリ(--src で指定可)は、デフォルトの位置が用意されている

pipenv

  • pipenv install -e の editable mode は egg-link でインストールを行う。
    • pypi での名前解決可能で、パッケージ名指定できる。
    • git (VCS) 管理の URL も使える。VCS 経由のものはeditable にすべき
    • editable として展開されている場所は pip 同様規定値が使われる。
  • --dev は [dev-packages] に区分けされて Pipfile に入る。egg-link とは関係ない。
    • --dev は他の環境でインストールするときに効く。
    • pipenv install --dev で packages と dev-packages の両方が入る。
    • 典型的には tests_require で指定していたようなパッケージが該当する

補足

pypi は python package index で、PEP 503 に仕様がある。simple repository APIという、たいへん検索しにくい名称。中身は API というよりは、ファイルレイアウトの規則になっている。

dev-packages や tests_require といった「条件によってインストールするか決める」というものは、これらの特別なオプションを使わずに、extras の一つとして設定するという方法もあります。

pip の dependency resolver が変更されて、egg-link を使いにくい状況になってきています。pipenv の editable mode も時と場合によって使い分けたほうがよさそう。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1