m1 mac python3.9 使用 mysqlclient 包报错: name '_mysql' is not defined

2021-06-12 11:25:21 +08:00
 timchou
装了 arm 版的 homebrew,mysql\python3.9\mysql-client 全部都用 arm brew 重新安装过了,还是报错:

Traceback (most recent call last):
File "/x/lib/python3.9/site-packages/MySQLdb/__init__.py", line 18, in <module>
from . import _mysql
ImportError: dlopen(/x/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin.so, 2): no suitable image found. Did find:
/x/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin.so: mach-o, but wrong architecture
/x/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin.so: mach-o, but wrong architecture

NameError: name '_mysql' is not defined

求教有人遇到过吗?
3514 次点击
所在节点    macOS
12 条回复
hello2061
2021-06-12 11:42:40 +08:00
but wrong architecture 架构还是不对?
timchou
2021-06-12 12:00:25 +08:00
@hello2061
生成的_mysql.cpython-39-darwin.so 文件,还是 Mach-O 64-bit bundle x86_64
IgniteWhite
2021-06-12 15:35:17 +08:00
请善用搜索,谢谢。我帮你搜了一下,搜到了。你 Python 版本没搞对,要用 ARM 原生版本的 Python
https://github.com/Homebrew/discussions/discussions/569
timchou
2021-06-12 16:18:59 +08:00
@IgniteWhite 害,你怎么知道我没搜呢,要不是全了搜了一遍还没没解,我能来发帖。。?另外没看到我原贴里就写了 arm brew 安装的 python 吗



all,现在问题解决了,我尝试了各种办法,目前试下来,只能用 x86 的 homebrew 来跑,也就是说系统维护 2 个 brew,一个 x86 一个 arm64,然后用 x86 brew 来安装 python 和 mysql-client,然后再 pip install mysqlclient 。
如果哪位能用原生 arm 来解决,求提示下
IgniteWhite
2021-06-12 16:37:58 +08:00
@timchou 我给你的链接里不就有用原生 ARM 解决的步骤么……关键是你怎么确定自己装的是 ARM 版 Python ? which python3 的输出是什么
timchou
2021-06-12 20:32:11 +08:00
@IgniteWhite 谢谢您费心,不过我原文都写了,arm 版的 homebrew\python\mysql\mysql-client,都是,file xxx 查看都是 arm64,但是就是用 mysqlclient 的时候不行。
我 2 楼也写了,查到的原因是 mysqlclient 生成的.so 文件是 x86 的,问题是在这里,但是我没找到办法怎么生成 arm64 的 so 文件,所以只能干脆用 x86 的 python 来跑
IgniteWhite
2021-06-12 23:00:29 +08:00
@timchou okok,希望以后解决。我看有人说以前用过 pyenv 没处理干净也会有影响。
megachweng
2021-06-13 17:56:58 +08:00
楼主可以试试 conda,M1 下环境管理非常香
Kobayashi
2021-06-14 04:38:00 +08:00
你确定你的 Python 是 arm 版的?输出一下 which python
timchou
2021-06-15 09:42:32 +08:00
@megachweng 好的,我研究下,谢谢
James1847
2021-09-26 16:54:10 +08:00
James1847
2021-09-26 16:54:29 +08:00
this can help u solve this problem

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/783061

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX