poetry show でパッケージ名に (!) が付与されている意味
poetry show は、poetry の設定ファイルの pyproject.toml
に記載された利用可能なパッケージ名を表示してくれる。
例えば、ターミナルで poetry install
を行う前に、poetry show
を行うと以下のような結果がでる。
そして、grep で上記の結果を表示させてみると
> poetry show | grep aiohttp
aiohttp (!) 3.8.1 Async http client/server framework (asyncio)
と パッケージ名に (!)
が付与されている。
この(!)
ってそもそもどんな意味なのか気になったので調べてみました。
Poetry のコードを直接読んでみると、
test_show_basic_with_not_installed_packages_non_decoratedのテストケースが今回の事例にマッチしており、わかりやすかった。
意味としては、「インストールされたパッケージに対する show コマンドを非装飾モードで結果を出力」へのテストだ。
状況としては、cachy
とpendulum
を poetry add して、 cachy
のみを poetry install している。
poetry.package.add_dependency(Factory.create_dependency("cachy", "^0.1.0"))
poetry.package.add_dependency(Factory.create_dependency("pendulum", "^2.0.0"))
cachy_010 = get_package("cachy", "0.1.0")
cachy_010.description = "Cachy package"
pendulum_200 = get_package("pendulum", "2.0.0")
pendulum_200.description = "Pendulum package"
installed.add_package(cachy_010)
その後に、poetry show を実行した際に以下のように(!)
が期待される出力となっている。
cachy 0.1.0 Cachy package
pendulum (!) 2.0.0 Pendulum package
実際に(!)
を付与している部分はここ。
https://github.com/python-poetry/poetry/blob/68f4da8c0af754dd9afd8c96cf97a2b80fced33e/src/poetry/console/commands/show.py#L310-L311
if not self.io.output.is_decorated():
# Non installed in non decorated mode
install_marker = " (!)"
is_decorated
は、出力結果を装飾するかどうかのフラグを指しており、このフラグの可否でTrue
の場合は色がついて装飾されて出力される。
is_decoratedの定義はここにあった。
自分の場合、設定が上手くいかなかったのが原因で内製パッケージを読み込んでいる部分を知らないうちに失敗して、そのパッケージが(!)がついて表示されていた。
おそらくパイプを通すことで、poetry show
の装飾フラグがFalse
になっていそうではある
まとめ
- (!)は該当パッケージがインストールされていないことを示している
- 装飾(decorated)モードが
True
なら、ターミナルでは(!)の代わりに装飾されてパッケージ名が表示される(例えば自分のターミナルなら、未インストールのパッケージ名が赤色で表示される)
蛇足)設定をミスってインストール失敗していた際に、Python の実行画面では
ModuleNotFoundError: No module named
と表示されていたので、やはりログが言っていることは正しかった…!
関連しているかもしれない記事
- 社内でデータ分析結果を可視化・共有する際に Google Colab が便利
- Google Colab で Spacy による NER の結果を表示するには、jupyter 引数を True にする必要がある
- Python で DeepL API Free を利用してテキストファイルを翻訳する
- Jupyter Notebook で画像をダウンロードすることなく、URLから参照してPandas DataFrame内部に表示させる
- How to get the uploaded file path and processing its file in Streamlit
📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。
このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。
このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨
Amazonでほしいものリストも公開しているので、こちらからもサポートしていただけると励みになります。