Python MySQL错误的架构错误

Pho*_*beB 26 python mysql install

我已经有一段时间了,并阅读了很多关于这个主题的网站.怀疑我有垃圾说谎导致这个问题.但是哪里?

这是我在python中导入MySQLdb时的错误:

>>> import MySQLdb
    /Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg/_mysql.pyc, but /Users/phoebebr/Downloads/MySQL-python-1.2.3c1 is being added to sys.path
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "MySQLdb/__init__.py", line 19, in <module>
        import _mysql
      File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module>
      File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__
    ImportError: dlopen(/Users/phoebebr/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): no suitable image found.  Did find:
        /Users/phoebebr/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so: mach-o, but wrong architecture
Run Code Online (Sandbox Code Playgroud)

我正在尝试64位,所以在这里检查:

file $(which python)
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc
file $(which mysql)
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)

已将我的默认python版本设置为2.6

python
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Run Code Online (Sandbox Code Playgroud)

尝试删除构建目录和python setup.py clean重命名Python/2.5/site-packages,以便它无法尝试选择它.

UPDATE

删除所有内容并按照此处的说明操作: Mac OS 10.6.2上的Django + MySQL使用macports安装Snow Leopard.

但基本上仍然得到相同的错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_mysql.so, 2): no suitable image found.  Did find:
    /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_mysql.so: mach-o, but wrong architecture
>>> 
Run Code Online (Sandbox Code Playgroud)

小智 29

我有一台新的MacBook Air,我通过以下方式设法让MySQLdb工作:( Snow Leopard 10.6.6,预装Python)

uname -a
Darwin Braindamage.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386
Run Code Online (Sandbox Code Playgroud)

从mysql页面下载MySQL 32位dmg文件,安装它.

将以下行添加到〜/ .profile(或〜/ .bash_profile):

PATH="/usr/local/mysql/bin:${PATH}"
export PATH
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
export VERSIONER_PYTHON_PREFER_64_BIT=no
export VERSIONER_PYTHON_PREFER_32_BIT=yes
Run Code Online (Sandbox Code Playgroud)

保存后,在终端中键入以下内容:source~/.profile

下载MySQL-python-1.2.3.tar.gz unzip,untar,cd到该目录

python2.5 setup.py build
sudo python2.5 setup.py install
Run Code Online (Sandbox Code Playgroud)

退出该目录(或者你会收到警告)

python2.5
import MySQLdb
Run Code Online (Sandbox Code Playgroud)

要么

python
import MySQLdb
Run Code Online (Sandbox Code Playgroud)

它的工作方式应该是!!


DS.*_*DS. 13

尽管有很多答案,我只是在努力与之相同,所以我冒险添加另一个:

  • python -c 'import platform; print platform.platform()'.它以"64位"结尾吗?
  • ls -l /usr/local/mysql.这是一个符号链接:它以"x86_64"结尾吗?

如果python说"64位",那么你想要mysql为"x86_64"(在http://dev.mysql.com/downloads/mysql/上搜索).如果python说"32位",那么你可能想要"x86"mysql.如果你有匹配,但它仍然不起作用,那么请阅读其他答案(关于VERSIONER_PYTHON_PREFER_32_BIT等)

对我来说,不匹配导致"mach-o, but wrong architecture"错误.下一个错误是"Library not loaded: libmysqlclient.18.dylib... Reason: image not found".

要解决这个问题,我建议添加符号链接(而不是设置DYLD_LIBRARY_PATH,如其他答案中所述):

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/
Run Code Online (Sandbox Code Playgroud)


jdi*_*zio 2

当口译员说的是:

您已在 /Library/Python/2.6/site-packages 中安装了 MySQL_python-1.2.3c1,但您正在将 /users/phoebebr/Downloads 中的另一个版本添加到 sys.path 中。当我尝试从第二个目录导入MySQLdb时,我发现_mysql.so来自另一个体系结构。

所以,看来你以错误的 MySQLdb 版本结束了。删除 /Users/phoebebr/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp 和 /Users/phoebebr/Downloads/MySQL-python-1.2.3c1。再次测试看看 /library 中的版本是否有效。如果没有,请下载 MacOS 的二进制文件。最后一个例子,下载MySQL-python的源码并编译它。