Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

`generate-build-details.py --relative-paths --config-file-path` writes wrong paths

已關閉 適合新手
#160,004 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
2/5
預估耗時
1-3 小時
新手友好度
72/100
Issue 類型
缺陷
描述清晰度
描述清楚
活躍度
活躍
技術堆疊
python
領域
build-system

研究方向

從 Tools/build/generate-build-details.py 開始,檢查報告指出的錯誤路徑來源 make_paths_relative()。使用 --relative-paths --config-file-path 重現範例,並將寫入的 headers、base_interpreter 和 libpython 路徑與相對於絕對前綴的路徑進行比較。這些值正確且不依賴指令碼執行時所在的目錄,即表示完成。

由索引模型根據 Issue 內容生成。

描述

type-bug
Bug report

PEP 739 says a relative base_prefix is relative to the directory that contains build-details.json, and the other paths are relative to base_prefix. With --relative-paths --config-file-path, make_paths_relative() first replaces base_prefix with a path relative to the config file's directory, such as ../... It then computes the other paths relative to that relative base_prefix instead of the absolute one, so they're wrong.

For example, for an install whose prefix is /opt/python, running this from /tmp/build:

./python Tools/build/generate-build-details.py \
    /opt/python/lib/python3.16/build-details.json \
    --relative-paths \
    --config-file-path /opt/python/lib/python3.16/build-details.json

writes "base_prefix": "../..", which is correct, but also "headers": "./opt/python/include/python3.16" instead of ./include/python3.16. base_interpreter and the libpython paths are wrong in the same way. Because the relative base_prefix ends up resolved against the current directory, the wrong values also change with the directory the script runs from: from /Users/me/src/cpython/build, headers becomes ./../../../opt/python/include/python3.16.

see astral-sh/python-build-standalone#885 for example of how PBS deals with this issue.

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS

主要語言
Python
星號
77.7k
分支
38.3k
平均合併
12 小時 27 分鐘
30 天內合併 PR
645

環境準備

在 Codespaces 中開啟

在瀏覽器裡用你自己的 GitHub 帳號啟動這個專案的開發容器。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

python/cpython 的其他 Issue

查看 python/cpython 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。