【笔记】MSYS2 安装 Python 构建依赖记录Cython + Ninja + Meson + meson-python
#工作记录
📌 安装目标
为构建 Python C 扩展(如 numpy
)安装必要依赖:
- Cython
- Ninja
- Meson + meson-python
✅ 成功安装命令
pacman -S mingw-w64-x86_64-cython
pacman -S mingw-w64-x86_64-ninja
pacman -S mingw-w64-x86_64-meson-python
📦 安装结果
包名 | 版本 | 大小 | 状态 |
---|---|---|---|
mingw-w64-x86_64-cython | 3.0.12-1 | 18.25 MiB | ✅ 成功 |
mingw-w64-x86_64-ninja | 1.12.1-1 | 1.86 MiB | ✅ 成功 |
mingw-w64-x86_64-meson | 1.8.1-1 | 2.1 MiB | ✅ 成功(隐含依赖) |
mingw-w64-x86_64-python-pyproject-metadata | 0.9.1-1 | 39.4 KiB | ✅ 成功(隐含依赖) |
mingw-w64-x86_64-meson-python | 0.18.0-1 | 69.2 KiB | ✅ 成功 |
⚠️ 注意事项
1. 包命名规则修正
MSYS2 的包命名规则根据功能不同而有所区别:
包类型 | 命名规则 | 示例 |
---|---|---|
Python 绑定库 | 带 python- 前缀 | mingw-w64-x86_64-python-maturin |
通用工具/跨语言库 | 不带 python- 前缀 | mingw-w64-x86_64-cython , mingw-w64-x86_64-ninja |
Python 插件/扩展工具 | 带 python- 前缀 | mingw-w64-x86_64-meson-python |
关键点:
- 如果包是 Python 的绑定库(如
maturin
),需带python-
前缀。- 如果是通用工具(如
ninja
、cython
),不带python-
前缀。- 如果是 Python 插件(如
meson-python
),需带python-
前缀。
2. 隐含依赖问题
部分包会自动拉取依赖项(如 meson-python
会自动安装 meson
和 pyproject-metadata
)。
如果手动安装失败,可尝试通过以下命令搜索可用包:
pacman -Ss <keyword>
例如:
pacman -Ss meson
pacman -Ss cython
3. SSL 证书问题(历史遗留)
如果我们仍遇到 SSL 错误,可临时使用以下命令:
pip install <package> --trusted-host pypi.org --trusted-host files.pythonhosted.org
或
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package>
⚠️ 不推荐长期使用,建议切换到官方 Python 环境(见下文)。
🧪 验证安装
cython --version
ninja --version
meson --version
🛠️ 推荐操作建议
1. 切换到官方 Python 环境
MSYS2 的 Python 环境不适合构建 C 扩展,推荐使用 Python 官方发行版 并通过 py
命令管理版本。
示例:
py -3.12 -m venv .venv
.venv\Scripts\activate
pip install numpy
2. 使用 MSYS2 的 Python 时
- 确保已安装所有构建依赖(如
ninja
、meson-python
)。 - 避免在隔离环境中构建(Poetry 的隔离模式可能导致依赖缺失)。
📝 总结
关键点 | 说明 |
---|---|
包命名规则 | 根据功能区分 python- 前缀的使用 |
隐含依赖 | 安装 meson-python 时会自动拉取 meson 和 pyproject-metadata |
推荐环境 | 使用官方 Python 环境避免构建问题 |
验证命令 | 检查 cython 、ninja 、meson 的版本号 |
📎 附录:常见问题
Q: 安装失败,提示 target not found
?
A: 使用 pacman -Ss <package>
搜索可用包名,确认拼写和前缀是否正确。
Q: 构建仍失败,提示缺少 Ninja/Make?
A: 确认已安装 mingw-w64-x86_64-ninja
,或切换到官方 Python 环境。
最后更新时间:2025-06-01 19:45:26