← Back to issue list

Python plugin. `pip install .` failing because of `pyproject.toml` file

View original Github issue

Metadata

Project
craft-parts
Number
#747
Type
issue
State
open
Author
javierdelapuente
Labels
Created
2024-06-04 13:25:31+00:00
Updated
2025-03-11 14:28:41+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

### Bug Description When there is a `pyproject.toml` file in the repository, the Python plugin will run `pip install .` See: :https://github.com/canonical/craft-parts/blob/ecc7e2d9f45bdafff00dc72bbe1544a24b4275a6/craft_parts/plugins/python_plugin.py#L115). However, there are cases where the file `pyproject.toml` is created just to give tools their configuration. One example is NetBox (see [pyproject.toml](https://github.com/netbox-community/netbox/blob/develop/pyproject.toml)). When running `pip install .` in this repository, it will fail, as in this case the file `pyproject.toml` is not intended to be used to create a package. After a chat with @sergiusens, some workaround could maybe possible, like not running `pip install .` when there is some part missing in the `pyproject.tml` (like the project section). This issue is related to: https://github.com/canonical/rockcraft/pull/577 ### To Reproduce Run: `pip install .` in the NetBox repository: https://github.com/netbox-community/netbox ### part yaml _No response_ ### Relevant log output ```shell ubuntu@xiifactor:~/github/canonical/netbox$ pip install . Defaulting to user installation because normal site-packages is not writeable Processing /home/ubuntu/github/canonical/netbox Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [14 lines of output] error: Multiple top-level packages discovered in a flat-layout: ['charm', 'netbox', 'contrib']. 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. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip. ```

Evaluation history

No evaluation history available.