Pipenv、詩、ピップツールをカバーする1つのインストールツール


この記事では、我々はツールと呼ばれるツールを見てみましょうmicropipenv 主な目的は、Python依存関係をpip , pip-tools , Pipenv or Poetry .

Python開発者なら、おそらくPythonのパッケージで簡単に終了することができる依存関係の地獄を経験したでしょう.道具pip いくつかの時間のために回避されていますが、その実装は、より大きなPythonベースのアプリケーションを開発したり維持したりするのに十分ではありません.

ピップツール


プロジェクトpip-tools PIPの依存関係管理の欠如に対処しようとします.つのテキストファイルを使用しますrequirements.in and requirements.txt . 最初のファイルrequirments.in ユーザーが管理し、アプリケーションのバージョン範囲の仕様を直接依存します.後者requirements.txt 管理pip-tools , アプリケーションを実行するのに必要な特定のバージョンのすべてのパッケージを示すロックファイルとして動作しますnpm-shrinkwrap.json or package-lock.json NPM生態系から.
使うpip-tools , 必要に応じてPython仮想環境を明示的に維持する必要があります.Python 3.3の起動次のコマンドを実行して1つを作成し、アクティブにします.
python3 -m venv venv/
source venv/bin/active
仮想環境、コマンドを作成した後pip-compile and pip-sync あなたの友人になります.

pip-tools workflow as described in pip-tools package description available on PyPI


テストスイートを実行するために必要な依存関係については、pip-tools 慣例を導入するdev-requirements.in and dev-requirements.txt . 意味論を類推できる.

セットアップに注意してください。PYと要求txt


あなたはおそらく見たrequirements.txt 使用するファイルsetup.py . との違いpip-tools それは新参者のために誤解を招く可能性があります.ライブラリを発行したい場合は、解決されたソフトウェアスタックがアプリケーション側でどのように見えるかわからないので、移行の依存性を特定のバージョンにピンで止めてすべてのバージョンを制限する必要はありません.最終的な解像度は、常にライブラリレベルではなく、アプリケーションレベルで発生する必要があります.ライブラリ管理者として、ライブラリ内で使用される依存関係を使用してライブラリの互換性に関する情報を提供します.

パイナップル


最も人気のあるPythonライブラリの著者です.requests , プロジェクトを導入したPipenv インJanuary 2017 . プロジェクトは非常に迅速にコミュニティから人気と注目を得た.

Pipenv: Python Dev Workflow for Humans


プロジェクトの主な目的は、依存関係の管理を簡素化し、よりユーザーフレンドリーにすることでした.これは、仮想環境を維持し、1つのコマンドを使用して依存関係を管理するのに役立ちますPipfile ( TOML )Pipfile.lock (JSON)

我々のチームのPipenv


我々は、Red Hatで、Pipenvを採用して、それの中で展開の間の依存関係管理のためのオプションのうちの1つを作りましたOpenShift’s Source-To-Image ビルドプロセスFedora-based Python container images or Thoth’s Python s2i container images ). それは我々の人気も得たAICoE and Thoth team Pythonソースコードを持つすべてのリポジトリは、依存関係管理のためにPipenvを使用します.


もう一つのオプションはPoetry . 特にPipenvの静かな段階の間、詩はパイソンコミュニティを引きつけたように見えます.詩はPipenvを使用する:人間のためのPythonのdevのワークフロー
Pipenvよりロック形式の異なるタイプは、すべてPipenvまたはPIPと互換性がありません.

micropipenv


いくつかの要件やアイデアは、新しいツールを導入することにつながるmicropipenv . いいえ、もう一つ紹介するつもりはありませんpip , pip-tools , Poetry or Pipenv .

https://xkcd.com/1987/


この軽量実装(1ファイル、約1200 LOCのコメントを)1つの任意の依存関係を持っており、PipEnv、詩、PIPツール、または単純なrequirements.txt 一般的に使われるファイルsetup.py . あなたがする必要がある唯一のことは問題です:
micropipenv install
ツールは、自動的にあなたの依存関係を管理し、目的のインストールを実行する要件ファイルまたはロックファイルの種類を検出します.
また、ツールは、任意のロックファイルを変換することができます簡単な変換機能を提供してrequirements.txt //requirements.in .
PIPツールのスタイルを生成するにはrequirements.in and requirements.txt PipenvやPOST LOCKファイルがディレクトリに存在すると仮定すると、以下のコマンドを実行できます.
micropipenv requirements --no-dev > requirements.txt
micropipenv requirements --no-dev --only-direct > requirements.in
micropipenv requirements --no-default > dev-requirements.txt
micropipenv requirements --no-default --only-direct > dev-requirements.in
依存関係をインストールしたい場合は、MicroPipEnvをインストールする必要はありません.あなたは単にそれをダウンロードすることができますし、一度の仕事を行うことができます:
curl https://raw.githubusercontent.com/thoth-station/micropipenv/master/micropipenv.py | python3 - install
参照documentation and sources を参照してください.

トス


CTOのRed Hatのオフィスで進行中の努力の一つは、Thethと呼ばれるプロジェクトです.この記事では、Micropipenvは、このプロジェクトで生まれたツールを新しく生まれた.我々の公的に利用可能なデモのうちの1つをチェックして、MicroPipenvを実行してください.
あなたは、より多くのアップデートのために我々の後を追うことができます.

なぜMicropipenv?


Micropipenvの背後にある主な理由は、サイレントフェーズの間にPipenvのメンテナンスコストを削減することでした.しかし、特に、コンテナ化されたアプリケーションに関しては、依存関係をインストールするためのそのような最小限のツールを持っているのは良い考えであることがわかりました.Micropipenvの主な利点はそのサイズであることがわかった.
アプリケーションをコンテナ化環境で展開するとき、アプリケーションのロックファイルを維持するのは本当に良いアイデアです.ロックファイルが依存している依存関係のスタック全体が既に解決されている状態であるため、コンテナイメージ内に出荷された詩やPipenvが必要な理由はありません.提供されたすべてのロックファイルから依存関係をインストールするツールは、コンテナイメージサイズとソフトウェアが存在する(そして、アプリケーションによって出荷される)を減らすために行く最小限の方法のようです.
A simple size comparison done a while back showed approximately 30.4MiB difference Pipenvがmicropipenvを使用している単一のファイルアプローチと比較してコンテナ化された環境にインストールされなかったとき.

micropipenv can read in Pipfile.lock, requirements.txt or poetry.lock stating already resolved software stack and install it using pip.


CLIのデザインは、オープンソースの世界で利用可能なすべての人気のPython依存性管理ツール間の互換性層を作るMicropipenv Aの簡単なツールを作った.

プロジェクトトス


プロジェクトトスは、Python開発者を支援するアプリケーションです.任意の改善と我々はプロジェクトThethで作る任意の進捗状況に更新したい場合は、スクラムデモからの録音だけでなく、我々のポスト更新プログラムを購読すること自由に感じなさい.また、.