LoginSignup
7
4

More than 3 years have passed since last update.

「No file/folder found for package ***」のエラー解消方法

Posted at

はじめに

個人的な備忘録としてのメモです。

問題点

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なディレクトリを追加する方法なので、できれば階層変更の方が良いのかなと思います。

pyproject.toml#package

おわりに

記載内容について、誤記や漏れなどありましたら適宜コメント頂けると幸いです。

7
4
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
7
4