Bug: PythonUvBuilder resolves local requirements from the caller directory
Maintainer antworten meist innerhalb von 6 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- python
- Bereich
- build-system
Rechercherichtung
Beginne in aws_lambda_builders.workflows.python_uv.packager bei PythonUvDependencyBuilder.build_dependencies und vergleiche dann den Build-Pfad für requirements mit dem pyproject-Build-Pfad, der ein Arbeitsverzeichnis bereitstellt. Reproduziere den Fehler mit dem im Issue beschriebenen lokalen Wheel und requirements.txt, indem du den Build außerhalb des Funktionsverzeichnisses ausführst. Das Ziel ist erreicht, wenn das Wheel relativ zum Manifest aufgelöst und sein Modul in das angeforderte Artefaktverzeichnis geschrieben wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
PythonUvBuilder resolves relative wheel and local package paths in a requirements manifest against the process working directory, rather than the manifest directory. A function with a vendored wheel therefore fails when built from its parent directory. The pyproject build path already supplies a working directory to uv; the requirements build path does not.
Steps to reproduce
With aws-lambda-builders 1.68.0 and uv installed, run this from outside the temporary function directory:
from pathlib import Path
from tempfile import TemporaryDirectory
from zipfile import ZipFile
from aws_lambda_builders.workflows.python_uv.packager import PythonUvDependencyBuilder
with TemporaryDirectory() as directory:
root = Path(directory)
app = root / "function"
app.mkdir()
wheel = app / "local_demo-1.0.0-py3-none-any.whl"
with ZipFile(wheel, "w") as archive:
archive.writestr("local_demo.py", "VALUE = 42\n")
archive.writestr("local_demo-1.0.0.dist-info/METADATA",
"Metadata-Version: 2.1\nName: local-demo\nVersion: 1.0.0\n")
archive.writestr("local_demo-1.0.0.dist-info/WHEEL",
"Wheel-Version: 1.0\nRoot-Is-Purelib: true\nTag: py3-none-any\n")
archive.writestr("local_demo-1.0.0.dist-info/RECORD", "")
manifest = app / "requirements.txt"
manifest.write_text(f"./{wheel.name}\n", encoding="utf-8")
target, scratch = root / "artifacts", root / "scratch"
target.mkdir()
scratch.mkdir()
PythonUvDependencyBuilder(runtime="python3.13").build_dependencies(
str(target), str(scratch), str(manifest)
)
Observed result
UvBuildError: ... UV pip install failed: ... Distribution not found at: file:///<caller-directory>/local_demo-1.0.0-py3-none-any.whl
The wheel exists in function/; it is looked up outside that directory. This also reproduces through LambdaBuilder.build() with either absolute or relative build paths.
Expected result
Install the local wheel from the requirements manifest's directory and write its module into the requested artifact directory, independently of the caller's working directory.
Environment
- Windows, Python 3.13.3, uv 0.11.26
- aws-lambda-builders 1.68.0, develop commit
e3e14536501e38b0d6d8db582ddec6d0e0bd6f8a - Reproduction uses a local wheel only; no AWS account or package index is needed.
I checked the open and closed issue/PR history. #887 addresses workspace-root discovery for pyproject builds; this reproduction uses only requirements.txt and no workspace.
- Vorherrschende Sprache
- Python
- Sterne
- 381
- Forks
- 161
- Ø Merge
- 5 T. 14 Std.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus aws/aws-lambda-builders
-
python_uv: `UvConfig.compile_bytecode` is never passed to uv, so the option has no effectEvtl. vergeben @xujiantop-crypto hat das vor 51 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
aws/aws-lambda-builders#925 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 6 Tagen
-
Bug: PythonUvBuilder does not target Lambda manylinux compatibilityEvtl. vergeben @vinsymoyya hat das heute übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 70/100
aws/aws-lambda-builders#955 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 6 Tagen
-
Bytecode compiled during build is always discarded at runtime: SAM packaging writes 1980 timestamps, so timestamp-based .pyc never validateEvtl. vergeben @xujiantop-crypto hat das vor 51 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 64/100
aws/aws-lambda-builders#924 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 6 Tagen
-
Bug: PythonUvBuilder fails to build app with dependencies on editable installs in the workspaceEvtl. vergeben @noritada hat das vor 120 Tagen übernommen. Offenstage/needs-triage
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
aws/aws-lambda-builders#892 ·
Maintainer antworten meist innerhalb von 6 Tagen
-
Feature request: Add native uv support and configurationEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenstage/needs-triage type/feature
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
aws/aws-lambda-builders#839 · 3 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 6 Tagen
Alle Issues in aws/aws-lambda-builders
Ähnliche Issues
-
Remove the `pull_request_target` workflow before GitHub blocks itEvtl. vergeben @jat255 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
IBM/mcp-context-forge#7483 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
[Bug Report]: OpenAI 辅助 API 连通性测试因输出上限仅 1 token 误报“未知错误”Evtl. vergeben @fjfanjian hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Project-N-E-K-O/N.E.K.O#3640 ·
Maintainer antworten meist innerhalb von 1 Tag
-
author-page correction
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
acl-org/acl-anthology#10808 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag