当前位置: 首页 > news >正文

【笔记】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-cython3.0.12-118.25 MiB✅ 成功
mingw-w64-x86_64-ninja1.12.1-11.86 MiB✅ 成功
mingw-w64-x86_64-meson1.8.1-12.1 MiB✅ 成功(隐含依赖)
mingw-w64-x86_64-python-pyproject-metadata0.9.1-139.4 KiB✅ 成功(隐含依赖)
mingw-w64-x86_64-meson-python0.18.0-169.2 KiB✅ 成功

⚠️ 注意事项

1. 包命名规则修正

MSYS2 的包命名规则根据功能不同而有所区别:

包类型命名规则示例
Python 绑定库带 python- 前缀mingw-w64-x86_64-python-maturin
通用工具/跨语言库不带 python- 前缀mingw-w64-x86_64-cythonmingw-w64-x86_64-ninja
Python 插件/扩展工具带 python- 前缀mingw-w64-x86_64-meson-python

关键点

  • 如果包是 Python 的绑定库(如 maturin),需带 python- 前缀。
  • 如果是通用工具(如 ninjacython),不带 python- 前缀。
  • 如果是 Python 插件(如 meson-python),需带 python- 前缀。

2. 隐含依赖问题

部分包会自动拉取依赖项(如 meson-python 会自动安装 mesonpyproject-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 时

  • 确保已安装所有构建依赖(如 ninjameson-python)。
  • 避免在隔离环境中构建(Poetry 的隔离模式可能导致依赖缺失)。

📝 总结

关键点说明
包命名规则根据功能区分 python- 前缀的使用
隐含依赖安装 meson-python 时会自动拉取 meson 和 pyproject-metadata
推荐环境使用官方 Python 环境避免构建问题
验证命令检查 cythonninjameson 的版本号

📎 附录:常见问题

Q: 安装失败,提示 target not found

A: 使用 pacman -Ss <package> 搜索可用包名,确认拼写和前缀是否正确。

Q: 构建仍失败,提示缺少 Ninja/Make?

A: 确认已安装 mingw-w64-x86_64-ninja,或切换到官方 Python 环境。


最后更新时间:2025-06-01 19:45:26
 

相关文章:

  • 焦虑而烦躁的上午
  • LeetCode 1497. 检查数组对是否可以被 k 整除
  • nt!MiDispatchFault函数分析之nt!MiCompleteProtoPteFault函数的作用
  • InfluxDB 高级分析实战:预测、技术指标与异常检测全指南
  • 70.新增用户内容复制功能
  • 1-2 Dart SDK 安装
  • rl_sar功能包详解
  • PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。
  • Python+MongoDb使用手册(精简)
  • Baklib加速企业AI数据治理实践
  • Flickr30k Entities短语定位评测指南
  • 基于大模型预测的寻常型天疱疮诊疗方案研究报告
  • 鸿蒙OSUniApp内存管理优化实战:从入门到精通#三方框架 #Uniapp
  • 牛顿迭代算法-深度解析
  • TDengine 基于 TDgpt 的 AI 应用实战
  • Kubernetes(K8s)核心架构解析与实用命令大全
  • Ansible自动化运维工具全面指南:从安装到实战应用
  • Ansible 进阶 - Roles 与 Inventory 的高效组织
  • 《分子动力学模拟的参数困局:QML的突围方案》
  • Python实现HPSO-TVAC优化算法优化支持向量机SVC分类模型项目实战
  • 做家教的网站/太原百度推广开户
  • 最火wordpress主题/武汉seo服务外包
  • 外国网站学习做任务 升级/深圳搜索引擎优化推广便宜
  • 怎么查询企业邮箱/怎么做网站优化排名
  • 网站速度打开慢的原因/今天的新闻大事10条
  • 国外建筑设计网站/北京网站建设公司