← 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
Updated
Closed

Current evaluation

Python plugin runs `pip install .` when pyproject.toml exists, failing for projects using it only for tool config. Issue is 823 days old with recent suggestion for heuristic fix.

Suggested action: needs triage

Reason: The issue lacks labels, assignee, and explicit maintainer acknowledgment despite being 823 days old. A recent comment from cmatsuoka suggests a heuristic approach (checking for [project] or [build-system] sections in pyproject.toml), but no maintainer has committed to addressing it or prioritized the fix.

Impact: 45 Quick Win: 24.75 Staleness: 55 Complexity: 45 Confidence: 70 Support Request: 15

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

Date Model Scores Action Summary
qwen3.6-35b-a3b-mtp-q6
Impact: 45
Quick Win: 24.75
Staleness: 55
Complexity: 45
Confidence: 70
Support Request: 15
needs triage Python plugin runs `pip install .` when pyproject.toml exists, failing for projects using it only for tool config. Issue is 823 days old with recent suggestion for heuristic fix.
qwen/qwen3.8-27b
Impact: 45
Quick Win: 24.75
Staleness: 80
Complexity: 45
Confidence: 80
Support Request: 15
needs triage Python plugin runs pip install . when pyproject.toml exists, failing for repos where the file is config-only (e.g. NetBox). Bug still present in code; no maintainer triage after 818 days.
qwen/qwen3.6-35b-a3b
Staleness: 85
Complexity: 45
Confidence: 75
Support Request: 20
needs triage Python plugin fails pip install . when a non-packaging pyproject.toml exists. The issue lacks maintainer response, labels, or assignee, and has been inactive for over two years.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 40
Confidence: 75
Support Request: 10
needs triage Python plugin fails when pip install . is run on repositories with a pyproject.toml not intended for packaging. The issue remains unlabelled and unassessed by maintainers after over two years.
qwen3.6-35b-a3b-mtp-q6
Staleness: 95
Complexity: 40
Confidence: 65
Support Request: 15
close stale Python plugin fails running pip install . on repos where pyproject.toml configures tools rather than packaging. Suggests skipping the command if the project section is missing. Open, awaiting triage. Jira ticket CRAFT-3007 created.

Update history

Date Change
updated

Related work

  • Related To: canonical/rockcraft#577 (confidence 80%)

    Issue body explicitly mentions this related PR as context for the problem.

Related issues

Issue Project State Summary Similarity
#2008237 python plugin doesn't work with pyproject.toml based projects snapcraft (launchpad) closed Closed without resolution due to inactivity. The python plugin fails to build pyproject.toml projects correctly, omitting console_scripts from the resulting snap.
72%