search
LoginSignup
3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

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

はじめに

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

問題点

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

おわりに

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

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
What you can do with signing up
3
Help us understand the problem. What are the problem?