Multiple top-level packages discovered in a flat-layout

Publish date: 2024-05-21

I am trying to install a library from the source that makes use of Poetry, but I get this error

error: Multiple top-level packages discovered in a flat-layout: ['tulips', 'fixtures']. To avoid accidental inclusion of unwanted files or directories, setuptools will not proceed with this build. If you are trying to create a single distribution with multiple packages on purpose, you should not rely on automatic discovery. Instead, consider the following options: 1. set up custom discovery (`find` directive with `include` or `exclude`) 2. use a `src-layout` 3. explicitly set `py_modules` or `packages` with a list of names To find more information, look for "package discovery" on setuptools docs 

What do I need to do to fix it?

4

2 Answers

Based on this comment on a GitHub issue, adding the following lines to your pyproject.toml might solve your problem:

[tool.setuptools] py-modules = [] 

(For my case, the other workaround provided in that comment, i.e. adding py_modules=[] as a keyword argument to the setup() function in setup.py worked)

5

Adding the following in pyproject.toml worked for me. It was a repo with many folders but just one folder had the package code:

[tool.setuptools.packages.find] where = ["."] # list of folders that contain the packages (["."] by default) include = ["<package name>"] # package names should match these glob patterns (["*"] by default) exclude = [] # exclude packages matching these glob patterns (empty by default) namespaces = false # to disable scanning PEP 420 namespaces (true by default) 
1

ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJobmtqaWl%2FeoWOpqylrJmluaZ506inZqSVq7Ktec%2BamqSZl5rAbrDIrJqorpWnsqV5yKdkmmWWoa61ecuasKitpA%3D%3D