MSYS2 环境配置与 Python 项目依赖管理笔记

news2025/6/9 13:44:50

#工作记录

MSYS2 环境配置

安装和更新 MSYS2

初始安装
  1. 下载并安装 MSYS2

    • 访问 MSYS2 官方网站 并下载安装包。

    • 按照安装向导完成安装。

  2. 更新 MSYS2

    • 打开 MSYS2 终端(MSYS2 MINGW64)。

    • 更新包数据库和核心系统包:

      pacman -Syu

    • 关闭终端,重新打开 MSYS2 终端。

    • 更新所有软件包:

      pacman -Su

查看已安装的包

如果我们是通过 pip 安装的 Poetry,那么它不会出现在 MSYS2 的包管理中。
此时,你可以通过以下命令查看 Poetry 的安装路径和版本:

通过这些命令,我们可以获取有关 Python 和 Poetry 的详细信息。

  1. 查看所有已安装的包

    pacman -Q

    这个命令会列出所有已安装的包,包括它们的名称和版本。

  2. 查看手动安装的包

    pacman -Qe

    这个命令会列出所有手动安装的包,不包括作为依赖自动安装的包。

  3. 查看特定包的信息

    pacman -Qi <package_name>
     

    <package_name> 替换为我们想查询的包的名称。

    举例:查看已安装的 Python 和 Poetry 信息

  4. 查看 Python 信息

    pacman -Qi mingw-w64-x86_64-python3

  5. 查看 Poetry 信息

    pacman -Qi mingw-w64-x86_64-python-poetry

  6. 查看 Poetry 安装路径

    which poetry

  7. 查看 Poetry 版本

    poetry --version

  8. 查找特定软件包

    pacman -Qs <keyword>

    <keyword> 替换为我们想搜索的关键词。

  9. 查看可用的更新

    pacman -Qu
     

Python 项目依赖管理

安装 Python 和相关工具

安装 Python
  1. 安装 Python

    pacman -S mingw-w64-x86_64-python3

    • 这个命令安装的是 MSYS2 提供的 Python 3.x 最新适配版本。

    • 注意:这个操作会安装或升级 Python,但不会改变系统中已有的其他 Python 版本。

  2. 验证 Python 安装

    python3 --version

安装 Poetry
  1. 安装 Poetry

    #推荐(统一工具链管理)
    pacman -S mingw-w64-x86_64-python-poetry
    
    #备选(不推荐,容易引发依赖冲突)
    curl -sSL https://install.python-poetry.org | python3 -

  2. 验证 Poetry 安装

    poetry --version

安装编译工具链(包括 G++)
  1. 安装编译工具链

    pacman -S base-devel mingw-w64-x86_64-toolchain

    按 回车键 和 Y 键 全部安装 和 确认安装。

    • 这个命令会安装完整的编译工具链,包括 gccg++ 等。

    • 注意:这个操作不会升级 Python 版本。

  2. 验证工具链安装

    gcc --version
    g++ --version

安装 GTK 和其他依赖
  1. 安装 GTK 和其他依赖

    pacman -S mingw-w64-x86_64-gtk3

    • 这个命令会安装 GTK 3 及其相关依赖。

    • 注意:这个操作不会升级 Python 版本。

  2. 验证 GTK 安装

    pkg-config --exists gtk+-3.0 && echo "GTK 3.0 is installed" || echo "GTK 3.0 is not installed"

创建和配置 Poetry 项目

创建新的 Poetry 项目
  1. 创建新的 Poetry 项目

    mkdir my_project
    cd my_project
    poetry init
     

  2. 安装项目依赖

    poetry install
     

  3. 添加依赖

    poetry add numpy
    poetry add aiohttp
     

  4. 手动安装本地包: 如果需要安装本地的 .pkg.tar.zst 包,可以使用以下命令:

    pacman -U /path/to/package.pkg.tar.zst
     

    注意:这个操作不会升级 Python 版本。

修复依赖问题

修复 NumPy 安装问题

  1. 确保安装了 Python 开发库

    pacman -S mingw-w64-x86_64-python3

    • 这个操作会确保 Python 开发库安装或升级到最新版本。

    • 安装后要注意处理该 Python 版本的所有依赖关系。

  2. 手动安装 NumPy: 如果自动安装失败,可以手动安装 NumPy 的预编译包:

    • 下载适合 Windows 的 NumPy 预编译包(通常是 .tar.zst 文件)。

    • 根据文件地址,使用 pacman -U 安装:

      pacman -U /e/Downloads/mingw-w64-x86_64-python-numpy-2.2.6-1-any.pkg.tar.zst
    • 注意:这个操作不会升级 Python 版本。
       

修复 GTK 依赖问题

  1. 确保安装了 GTK 和相关库

    pacman -S mingw-w64-x86_64-gtk3

    • 这个操作不会升级 Python 版本。

    • 注意处理相关依赖关系。

  2. 设置环境变量

    • 将 GTK 的路径添加到系统的 PATH 环境变量中,新建一个变量名:

      GTK_BASEPATH

    • 设置 GTK_BASEPATH 环境变量:

      D:\msys64\mingw64

  3. 验证 GTK 安装

    pkg-config --exists gtk+-3.0 && echo "GTK 3.0 is installed" || echo "GTK 3.0 is not installed"

修复其他依赖问题

  1. 查看错误日志: 如果安装过程中遇到错误,查看错误日志以获取更多信息:

    cat /更换为错误输出的显示路径path/to/error/log
     

  2. 使用 --force--legacy-peer-deps: 如果在poetry虚拟环境 npm 安装时遇到依赖冲突,可以尝试以下命令:

    npm install --legacy-peer-deps
     

 

系统维护

清理旧的包文件

  1. 清理旧的包文件

    pacman -Sc
     
    • 这个命令会清理旧的包文件,释放磁盘空间。

    • 清理后注意验证我们所需的关键库是否运行正确。

  2. 确认清理操作

    $ pacman -Sc
    Packages to keep:
      All locally installed packages
    
    Cache directory: /var/cache/pacman/pkg/
    :: Do you want to remove all other packages from cache? [Y/n] y
    removing old packages from cache...
    
    Database directory: /var/lib/pacman/
    :: Do you want to remove unused repositories? [Y/n] y
    removing unused sync repositories...
    
    
     

查看磁盘空间

  1. 查看磁盘空间

    df -h

检查系统信息

  1. 查看已安装的包

    pacman -Q | head -n 10  # 查看部分已安装的包

  2. 查看系统版本信息

    uname -a

  3. 查看手动安装的包

    pacman -Qe

  4. 检查是否有包需要重建

    pacman -Qkk

从我的输出来看,pacman -Qkk 命令检查到 MSYS2 系统中有多个包存在文件冲突或损坏的情况。以下是一些解决步骤:

方法一:重新安装冲突的包

对于每个报告冲突的包,尝试重新安装它。例如,对于 ca-certificates 包:

pacman -S --overwrite '*' ca-certificates

对其他冲突的包(如 m4libb2lzo2 等)重复此步骤。

方法二:清理并重新同步包数据库

  1. 清理包缓存

    pacman -Sc

  2. 重新同步包数据库

    pacman -Sy

  3. 进行全面系统升级

    pacman -Su

方法三:手动修复关键包

对于关键包如 ca-certificates,手动修复步骤如下:

  1. 卸载问题包

    pacman -Rsn ca-certificates
     

  2. 重新安装该包

    pacman -S ca-certificates

对其他关键冲突包也执行上述步骤。

方法四:检查文件系统权限

确保 MSYS2 对相关目录具有正确的写入权限:

  • 检查并调整 MSYS2 安装目录(如 D:\msys64)的权限设置,确保你的用户账户拥有完全控制权限。

方法五:联系技术支持

如果上述方法无法解决问题,建议联系 MSYS2 社区或相关论坛寻求帮助。

通过这些步骤,我们应该能够解决文件冲突或损坏的问题。

 

参考资料

  • MSYS2 官方文档

  • Poetry 官方文档

  • NumPy 官方文档

  • GTK 官方文档

通过以上步骤,我们可以有效地配置和管理 MSYS2 环境中的 Python 项目及其依赖。如果在过程中遇到任何问题,可以参考相关文档或在社区中寻求帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云Flexus+DeepSeek征文|华为云一键部署知识库搜索增强版Dify平台,构建智能聊天助手实战指南

目录 前言 1 架构描述 2 资源栈创建流程详解 2.1 选择部署模板 2.2 参数配置内容 2.3 资源栈设置选项 2.4 配置确认与执行方式 3 部署过程与控制台反馈 3.1 实时资源监控 3.2 资源详情与访问路径 3.3 模板与事件管理 4 知识库构建流程 4.1 数据导入操作 4.2 文本…

分形几何在医学可视化中的应用:从理论到Python实战

分形几何在医学可视化中的应用&#xff1a;从理论到Python实战 前言 分形几何作为描述自然界复杂结构的数学工具&#xff0c;正通过其自相似性和分数维度特性&#xff0c;革新医学影像分析领域。本文系统阐述分形几何在医学影像中的创新应用&#xff0c;涵盖从图像预处理、分…

ESP-Brookesia:融合 AI 大模型,全新一代 GUI 开发与管理平台

乐鑫信息科技 (688018.SH) 推出 ESP-Brookesia ——一款专为物联网设备打造、集成 AI 交互能力的 UI 开发与管理框架。 ESP-Brookesia 深度融合 AI 大模型技术&#xff0c;为智能屏显应用赋予语音识别、自然语言对话、拟人化反馈等能力&#xff0c;帮助开发者构建更智能、更具…

【MATLAB去噪算法】基于CEEMD联合小波阈值去噪算法(第三期)

02.去噪算法原理 1.引言 传统EMD方法存在模态混叠问题&#xff0c;即信号成分在不同IMF分量中出现碎片化分布。为改进这一问题&#xff0c;Huang等&#xff08;1999&#xff09;提出间歇性测试算法&#xff0c;但效果有限。Wu和Huang&#xff08;2009&#xff09;发展的集合经…

机器学习实战37-基于情感字典和机器学习的股市舆情分析可视化系统

文章目录 一、项目背景数字时代情感分析情况二、项目流程1.数据采集与预处理2.复合情感分析模型构建3.舆情分析可视化:三、机器学习算法原理1.支持向量机基础2.核函数与高维映射3.情感分类特征融合4.模型训练与优化四、实现代码五、系统特点与优势1.复合情感分析模型2.多维度可…

CAD多面体密堆积3D插件

插件介绍 CAD多面体密堆积3D插件可在AutoCAD内建立三维随机多面体密堆积模型。 插件内置物理动力学模拟算法&#xff0c;通过模拟重力、碰撞等现象&#xff0c;使多面体在虚拟环境中发生自然堆积&#xff0c;进而实现真实的堆积效果。多面体堆积模拟中存在的局部穿模问题可通…

LLMs 系列科普文(5)

在前文中&#xff0c;我们讲述了什么是基础模型&#xff0c;并重点以 LLaMA 3.1 基础模型为例&#xff0c;向大家演示了它可以做什么&#xff0c;有哪些问题或有趣的现象。 在进入新的主题内容之前&#xff0c;我们再次对 基础模型 做一些总结&#xff1a; 这是一个基于 toke…

HarmonyOS开发:显示图片功能详解

目录 前言 Image组件基础 1、Image组件概述 2、加载图片资源 3、存档图类型数据源 &#xff08;1&#xff09;本地资源 &#xff08;2&#xff09;网络资源 &#xff08;3&#xff09;Resource资源 &#xff08;4&#xff09;媒体库file://data/storage &#xff08;…

ORACLE 修改端口号之后无法启动?

Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见&#xff0c;但并非必然发生。这一问题通常源于​​配置错误或环境冲突​​&#xff0c;而非端口修改本身。以下是系统性解决方案&#xff1a; &#x1f50d; ​​一、问题根源分析​​ ​​配置文件语法错误​​ 修…

Excel自动分列开票工具推荐

软件介绍 本文介绍一款基于Excel VBA开发的自动分列开票工具&#xff0c;可高效处理客户对账单并生成符合要求的发票清单。 软件功能概述 该工具能够将客户对账单按照订单号自动拆分为独立文件&#xff0c;并生成可直接导入发票清单系统的标准化格式。 软件特点 这是一款体…

Maven入门(够用)

1、Maven是什么&#xff1f; 这个问题非常不重要&#xff0c;或者说不应该上来就问maven是什么&#xff0c;而是直接学习maven怎么用能干什么&#xff0c;学完之后自然就知道了maven是个什么玩意儿&#xff0c;很多技术都是如此。 2、Maven下载 先准备Java环境&#xff0c;安…

自动化办公集成工具:一站式解决文档处理难题

1. 项目概述 在当今信息化时代,办公自动化已成为提升工作效率的关键。本文将详细介绍一款基于Python和PyQt5开发的「自动化办公集成工具」,该工具集成了多种常用的办公文档处理功能,包括批量格式转换、文本智能替换、表格数据清洗等,旨在为用户提供一站式的办公自动化解决方…

three.js 零基础到入门

three.js 零基础到入门 什么是 three.js为什么使用 three.js使用 Three.js1. 创建场景示例 2.创建相机3. 创建立方体并添加网格地面示例 5. 创建渲染器示例 6. 添加效果(移动/雾/相机跟随物体/背景)自动旋转示例效果 相机自动旋转示例 展示效果 实现由远到近的雾示例展示效果 T…

PublishSubject、ReplaySubject、BehaviorSubject、AsyncSubject的区别

python容易编辑&#xff0c;因此用pyrx代替rxjava3做演示会比较快捷。 pyrx安装命令&#xff1a; pip install rx 一、Subject&#xff08;相当于 RxJava 的 PublishSubject&#xff09; PublishSubject PublishSubject 将对观察者发送订阅后产生的元素&#xff0c;而在订阅前…

在Ubuntu22.04 系统中安装Docker详细教程

1.更新系统软件包 #确保您的系统软件包是最新的。这有助于避免安装过程中可能遇到的问题 sudo apt update sudo apt upgrade -y2.安装必要的依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common -y3.替换软件源 echo "deb htt…

AUTOSAR实战教程--DoIP_01_配置项解释

配置项 解释 备注 DoIPChannelSARef 引用DoIP Tester的源地址&#xff0c;就是你在DoIP Tester这个Containter中配置的Tester实例。 DoIPChannelTARef 引用目标地址。就是你在DoIPTargetAddress这个Container中的配置。 DoIPPduRRxPduId 为该pdu设置一个ID用于DoIP…

机器人/智能车纯视觉巡线经典策略—滑动窗口+直方图法

作者&#xff1a;SkyXZ CSDN&#xff1a;SkyXZ&#xff5e;-CSDN博客 博客园&#xff1a;SkyXZ - 博客园 在机器人或智能车的自主导航任务中&#xff0c;视觉巡线是一项最为基础且关键的能力之一。通过摄像头实时获取道路图像&#xff0c;并基于图像信息判断行驶路径&#xff0…

503 Service Unavailable:服务器暂时无法处理请求,可能是超载或维护中如何处理?

处理 "503 Service Unavailable" 错误是服务器管理者面临的常见挑战之一。这种错误通常表示服务器暂时无法处理请求&#xff0c;可能是由于服务器超载、维护中或其他临时性问题导致的。在本文中&#xff0c;我将介绍如何处理 "503 Service Unavailable" 错…

虚拟机时间同步

一、常见同步方式 常见的虚拟机同步方式有给虚拟机配置ntp、或者用平台提供的agent对时与虚拟机所在的宿主机。第一种依赖网络、第二种依赖平台的agent这个三方工具。 二、利用ptp_kvm.ko来直接和宿主机同步时间 关键组件 ptp_kvm驱动、chrony。 PTP_KVM同步原理 |--------…

软件更新机制的测试要点与稳定性提升

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…