はじめに
個人的な備忘録としてのメモです。
問題点
poetry add package名
とした時にたまに No file/folder found for package
というエラーが発生することがあります。
たまにというか、自作ライブラリを poetry add "git+ssh://git@github.com/ijfumi/****
とした時に発生したりします。
これはエラー文言にもある通り、「パッケージがないよ!」ってことなのですが、大体以下のようなディレクトリ階層になっていたりします。
mypackage
┣ data/
┣ config/
┣ main.py
┣ services/
┣ __init__.py
┣ aaa_service.py
┗ bbb_service.py
┣ poetry.lock
┣ pyproject.toml
┗ README.md
service
ってディレクトリあるじゃん?って、思う方もいるのかなと思います(実際、私はそうでした)
解決策
poetry
に限らず、 pip
でもインストールしたいパッケージと同じ名前のディレクトリがルートディレクトリにあり、
そこに各処理のコードが格納されている必要があるのです。
例えば、以下のような階層です。
mypackage
┣ data/
┣ config/
┣ main.py
┣ mypackage/
┣ services/
┣ __init__.py
┣ aaa_service.py
┗ bbb_service.py
┣ poetry.lock
┣ pyproject.toml
┗ README.md
問題点のとこで記述していた階層を、上記の様に変更することができれば問題解決します。
もし階層が変更できない場合でも pyproject.toml
に以下の記述を追加するだけで、解決します。
packages = [
{ include = "services" }
]
ただ、この方法は extra
なディレクトリを追加する方法なので、できれば階層変更の方が良いのかなと思います。
おわりに
記載内容について、誤記や漏れなどありましたら適宜コメント頂けると幸いです。