Macos m系列芯片环境下安装python3以及mysqlclient流程以及遇到的一系列问题

最近升级了生产力,换了m3的mbp,迁移项目的时候遇到的一系列python mysqlclient的环境问题,这里总结记录一下。

  • 设备:Macbook Pro m3
  • 系统:macos Sonoma 14.6
  • 最终成功的python版本:Python3.9.1
  • 最终系统环境下mysql-client版本:8.0.39

正式安装流程

python安装

关于Python版本
我原项目运行在之前环境是3.6版本,适配mysqlclient 1.4.6版本完美运行。在新环境下,先后尝试了3.6,3.12,3.7.3.8等各种版本,配合对应的各种mysqlclient先后遇到各种报错,要么无法正常安装mysqlclient,要么启动项目时出现各种问题,之后细说。
重点来了
忙活了半天才查到,python官方在3.9.1已经后续版本原生支持了m系列芯片的arm架构,这也是我认为导致我们明明安装了所有需要的环境依赖还是无法正常启动的主要原因。,然而中文网上能找到的类似解决方案都是针对老intel芯片环境下的报错处理
所以想要原生支持M系列芯片又考虑高版本带来的兼容性问题,我首选了Python3.9.1,采用官网安装包傻瓜式安装的方式

官网:python.org
文章插图
根据芯片类型别装错版本

  • 官网下载,打开安装包傻瓜式安装
  • 正常安装完运行终端,python3 -V,安装成功且环境变量正常应该能正常显示版本号Python 3.9.1rc1,且在/usr/local/bin目录下存在python相关文件
    安装python很简单,只要版本对了一点问题没有
mysqlclient安装

关于mysql-client
根据mysqlclient官方文档说明,我们可以选择在本地通过brew安装mysql或者,或者mysql-client的方式,这里我推荐直接使用mysql-client
重点又来了
本篇发布时间为24年10月,这个时候brew install mysql-client默认安装9版本,
这里我们一定一定要指定8版本brew install mysql-client@8.0,由于官网文档的提示,9版本弃用了一个重要功能,导致安装了这个版本后又安装了mysqlclient,即使成功安装了,引入import MySQLdb的时候还是会报一个mysql_native_password相关错误

可以参考mysqlclient文档
首选确保你的macos已经安装配置好了brew,以及配置了国内源。
其中通过mysql安装的方式就不讲了,经过实践遇到的问题比直接安装mysql-client还多一点

# 安装pkg-config
brew install pkg-config
# 安装 mysql-client
brew install mysql-client@8.0
# 添加环境变量 在 ~/.zshrc 中添加下面这行
export PKG_CONFIG_PATH="$(brew --prefix)/opt/mysql-client@8.0/lib/pkgconfig"
# 保存后 source ~/.zshrc 刷新环境变量
# 通过 printenv 可以查看确认当前环境变量

接下来可以正常安装mysqlclient,这里我安装的是mysqlclient 2.2.0版本

# 2.0.0 以上版本需要python3.8及以上才能兼容,这里我之前使用的老版本1.4.6已经无法完美适配了,好在对当前项目没有影响
pip3 install mysqlclient==2.2.0

如果正常安装完成,没有报错,进入当前python运行环境测试
文章插图
如果能正常引入MySQLdb而没有报错,那么基本上算上顺利完成了。可以尝试在虚拟环境安装完依赖启动项目试试

遇到的一些报错

由于在解决问题的时候没有记录,这里只展示部分问题

MySQL Error: name ‘_mysql’ is not defined: 这是在安装完成mysqlclient后启动项目遇到的,基本是由于macos中安装的mysql相关问题,这个试试在python运行环境中直接引入MySQLdb一定也是报错的。
Did you install mysqlclient?: 这个问题同上,即使pip list 能看到我们刚成功安装的mysqlclient,还是会提示这个错误。这还和mysqlclient的版本可能也有一些关系,但是即使版本对了可能还是会遇到上诉问题,重点还是要把握pyhton以及mysql-client版本,
mysqlclient安装失败: pip安装过程中的报错,一般是缺少环境,在mysql-client和pkg-config安装好后确认环境变量也是无异常,还可以根据报错信息看看是不是缺少了gcc,zstd之类的包
后续待补充

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL-常用容器-list

1list基本概念 **功能:**将数据进行链式存储 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成:链表由一系列结点组成 结点的组成:一个是存储…

基于django的志愿者社团管理系统

大家是不是常常遇到校园社团活动组织混乱、统计繁琐的困扰?其实我以前在做毕业设计的时候也头疼这些问题。后来,我们开发了一个基于Django的志愿者社团管理系统,可以帮你轻松解决这些麻烦!📌 🚀 核心功能模…

Opensearch集群部署【docker、服务器、Helm多种部署方式】

操作系统兼容性 我们建议在 Red Hat Enterprise Linux (RHEL) 或使用systemd的基于 Debian 的 Linux 发行版上安装 OpenSearch ,例如 CentOS、Amazon Linux 2 和 Ubuntu Long-Term Support (LTS)。OpenSearch 应该适用于大多数 Linux 发行版,但我们只测…

Java题集练习4

Java题集练习4 1 异常有什么用? 用来找到代码中产生的错误 防止运行出错2 异常在java中以什么形式存在? 异常在java中以类的形式存在,分为运行时异常和编译期异常,他们都在类Exception中3 异常是否可以自定义?如何自…

衡石分析平台系统分析人员手册-导入图表库图表

导入图表库图表​ 本文讲述在仪表盘中如何使用图表库图表,如果您还不了解图表库,请先点击链接了解它的功能和作用。 在数据集市中建立图表库后,分析人员可以在应用创作中引用图表库图表,快速的进行数据分析工作。 导入图表库图…

【建造&机械】木材运输车辆检测系统源码&数据集全套:改进yolo11-GhostHGNetV2

改进yolo11-SPPF-LSKA等200全套创新点大全:木材运输车辆检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.28 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片…

ubuntu 20.04编译驱动报gcc-12 not found错误

最近在自己安装的Ubuntu 系统上编译自定义驱动,发现无法编译.ko,错误如下: 按照如下操作,发现可以解决,记录下,主要是Ubuntu缺少g-12的包 安装包以后发现可以正常编译

什么是微服务中的反应性扩展?

大家好,我是锋哥。今天分享关于【什么是微服务中的反应性扩展?】面试题?希望对大家有帮助; 什么是微服务中的反应性扩展? Reactive Extensions 也称为 Rx。这是一种设计方法,我们通过调用多个服务来收集结果…

电脑程序变化监控怎么设置?实时监控电脑程序变化的五大方法,手把手教会你!

​在现代办公和信息安全领域,实时监控电脑程序变化是一项至关重要的任务。 无论是企业内网安全、员工行为审计,还是个人电脑的隐私保护,了解并设置有效的监控方法都是必不可少的。 本文将详细介绍五种电脑程序变化监控的方法,帮助…

DEVOPS: 集群伸缩原理

概述 阿里云 K8S 集群的一个重要特性,是集群的节点可以动态的增加或减少有了这个特性,集群才能在计算资源不足的情况下扩容新的节点,同时也可以在资源利用 率降低的时候,释放节点以节省费用理解实现原理,在遇到问题的…

华为原生鸿蒙操作系统的发布有何重大意义和影响:

#1024程序员节 | 征文# 一、华为原生鸿蒙操作系统的发布对中国的意义可以从多个层面进行分析: 1. 技术自主创新 鸿蒙操作系统的推出标志着中国在操作系统领域的自主创新能力的提升。过去,中国在高端操作系统方面依赖于外国技术,鸿蒙的发布…

outlook创建新账户时报错2603、2604的解决办法

全新的戴尔笔记本电脑,自带的Win11家庭版,安装ms office 2021也顺利完成。 但是奇怪的是,只有其中一台笔记本电脑,OUTLOOK无法添加新账户。 但是这个账号在WEB端登录正常,由于是新入职的员工,根据以往经验&…

Python小白学习教程从入门到入坑------第十八课 异常模块与包【上】(语法基础)

一、异常 在Python中,异常(Exception)是一种用于处理在程序运行时可能发生的错误情况的机制 异常允许程序在检测到错误时不是简单地崩溃,而是能够优雅地处理这些错误,可能包括记录错误信息、清理资源、或者向用户提…

QT界面开发--我的第一个windows窗体【菜单栏、工具栏、状态栏、铆接部件、文本编辑器、按钮、主界面】

经过前面的铺垫,今天我们就开始我们图形化界面之旅了,我们的第一个窗体主要包括:菜单栏、状态栏、工具栏、铆接部件、还有Qt提供的一些主窗体的API。 第一部分:主界面(QMainWindow) 当创建好项目后,我们直接运行&…

logdata-anomaly-miner:一款安全日志解析与异常检测工具

关于logdata-anomaly-miner logdata-anomaly-miner是一款安全日志解析与异常检测工具,该工具旨在以有限的资源和尽可能低的权限运行分析,以使其适合生产服务器使用。 为了确保 logdata-anomaly-miner的正常运行,推荐安装了python > 3.6的…

Qt 文本文件读写与保存

Qt 文本文件读写与保存 开发工具&#xff1a;VS2013 QT5.8 设计UI界面&#xff0c;如下图所示 sample7_1QFile.h 头文件&#xff1a; #pragma once#include <QtWidgets/QMainWindow> #include "ui_sample7_1QFile.h"class sample7_1QFile : public QMainWin…

中国人寿财险青岛市分公司:保障民生,传递关爱

中国人寿财险青岛市分公司以保障民生为使命&#xff0c;传递关爱与温暖。 在健康险领域&#xff0c;公司为市民提供全面的医疗保障。从重大疾病保险到普通医疗保险&#xff0c;满足不同客户的需求。通过与医疗机构合作&#xff0c;为客户提供便捷的就医服务和理赔服务&#xf…

Linux下的文件IO操作

目录 1.前导 1.1文件知识 1.2对比一下文件操作和重定向 1.2.1输入重定向 1.2.2追加重定向 1.3当前路径 1.4stdin stdout stderr 2.文件操作的系统调用接口 2.1.open()打开文件 2.1.2.flags参数 2.1.3.mode参数 2.1.3 umask()函数 2.2.write()向文件写入 ​编辑 2…

【Kaggle | Pandas】练习1:创造、阅读和写作

文章目录 1. 创建DataFrame2. 创建数据表3. 创建可变Series表4. 读取csv 数据集5. 保存csv 文件 1. 创建DataFrame 在下面的单元格中&#xff0c;创建一个 DataFrame fruits &#xff0c;如下所示&#xff1a; import pandas as pd # Your code goes here. Create a datafr…

Javaee---多线程(一)

文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…