在Snow Leopard上为Python 2.7安装MYSQL-python-1.2.3的问题
我从这个网站 http://sourceforge.net/projects/mysql-python/files/ 下载了一个 tar.gz 文件。
解压缩后,我运行了 python setup.py install,但它提示我需要 setuptools 模块,所以我从这个网站 http://pypi.python.org/pypi/setuptools#files 下载了 setuptools。下载的文件是 setuptools-0.6c11-py2.7.egg (md5),然后我运行了
sh setuptools-0.6c9-py2.4.egg
接着我回到 mysql-python-1.2.3 文件夹,运行了
sudo setup.py install
顺便说一下,这里是安装日志:
MacBook-Pros-MacBook-Pro:MySQL-python-1.2.3 2 macbookpro$ python setup.py install
running install
running bdist_egg
running egg_info
writing MySQL_python.egg-info/PKG-INFO
writing top-level names to MySQL_python.egg-info/top_level.txt
writing dependency_links to MySQL_python.egg-info/dependency_links.txt
reading manifest file 'MySQL_python.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'MANIFEST'
warning: no files found matching 'ChangeLog'
warning: no files found matching 'GPL'
writing manifest file 'MySQL_python.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.3-fat/egg
running install_lib
running build_py
creating build
creating build/lib.macosx-10.3-fat-2.7
copying _mysql_exceptions.py -> build/lib.macosx-10.3-fat-2.7
creating build/lib.macosx-10.3-fat-2.7/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb
creating build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.3-fat-2.7/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.3-fat-2.7
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -O2 -DNDEBUG -g -O3 -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.3-fat-2.7/_mysql.o -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL
In file included from _mysql.c:36:
/usr/local/mysql/include/my_config.h:1069:1: warning: "HAVE_WCSCOLL" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:8,
from pymemcompat.h:10,
from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyconfig.h:881:1: warning: this is the location of the previous definition
gcc-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -bundle -undefined dynamic_lookup build/temp.macosx-10.3-fat-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.3-fat-2.7/_mysql.so -arch x86_64
creating build/bdist.macosx-10.3-fat
creating build/bdist.macosx-10.3-fat/egg
copying build/lib.macosx-10.3-fat-2.7/_mysql.so -> build/bdist.macosx-10.3-fat/egg
copying build/lib.macosx-10.3-fat-2.7/_mysql_exceptions.py -> build/bdist.macosx-10.3-fat/egg
creating build/bdist.macosx-10.3-fat/egg/MySQLdb
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/__init__.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/connections.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb
creating build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/__init__.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/CLIENT.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/CR.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/ER.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/FIELD_TYPE.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/FLAG.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/constants/REFRESH.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/converters.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/cursors.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/release.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb
copying build/lib.macosx-10.3-fat-2.7/MySQLdb/times.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb
byte-compiling build/bdist.macosx-10.3-fat/egg/_mysql_exceptions.py to _mysql_exceptions.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/connections.py to connections.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/CLIENT.py to CLIENT.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/CR.py to CR.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/ER.py to ER.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/FIELD_TYPE.py to FIELD_TYPE.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/FLAG.py to FLAG.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/REFRESH.py to REFRESH.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/converters.py to converters.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/cursors.py to cursors.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/release.py to release.pyc
byte-compiling build/bdist.macosx-10.3-fat/egg/MySQLdb/times.py to times.pyc
creating stub loader for _mysql.so
byte-compiling build/bdist.macosx-10.3-fat/egg/_mysql.py to _mysql.pyc
creating build/bdist.macosx-10.3-fat/egg/EGG-INFO
copying MySQL_python.egg-info/PKG-INFO -> build/bdist.macosx-10.3-fat/egg/EGG-INFO
copying MySQL_python.egg-info/SOURCES.txt -> build/bdist.macosx-10.3-fat/egg/EGG-INFO
copying MySQL_python.egg-info/dependency_links.txt -> build/bdist.macosx-10.3-fat/egg/EGG-INFO
copying MySQL_python.egg-info/top_level.txt -> build/bdist.macosx-10.3-fat/egg/EGG-INFO
writing build/bdist.macosx-10.3-fat/egg/EGG-INFO/native_libs.txt
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg' and adding 'build/bdist.macosx-10.3-fat/egg' to it
removing 'build/bdist.macosx-10.3-fat/egg' (and everything under it)
Processing MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg
Copying MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg to /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Adding MySQL-python 1.2.3 to easy-install.pth file
Installed /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg
Processing dependencies for MySQL-python==1.2.3
Finished processing dependencies for MySQL-python==1.2.3
然后在我的 Django 项目文件夹里,我运行了 python manage.py runserver。
但是它失败了,返回了这个:
Validating models...
Unhandled exception in thread started by <function inner_run at 0x106df70>
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
self.validate(display_num_errors=True)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/validation.py", line 22, in get_validation_errors
from django.db import models, connection
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/__init__.py", line 77, in <module>
connection = connections[DEFAULT_DB_ALIAS]
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 91, in __getitem__
backend = load_backend(db['ENGINE'])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 32, in load_backend
return import_module('.base', backend_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 14, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg-tmp/_mysql.so, 2): no suitable image found. Did find:
/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg-tmp/_mysql.so: mach-o, but wrong architecture
有没有人遇到过类似的问题?能帮帮我吗?谢谢。
更新
file /Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg-tmp/_mysql.so
返回:
/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-fat.egg-tmp/_mysql.so: Mach-O 64-bit bundle x86_64
还有
file `which python`
返回:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc): Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386): Mach-O executable i386
更新 1
根据上面的信息,我觉得错误是因为 Python 安装在 i386,而 MySQLdb 在 x86_64(这是什么意思我也不太清楚...)。所以我尝试按照这个教程的方式构建 MySQLdb,教程在这里: http://cd34.com/blog/programming/python/mysql-python-and-snow-leopard/,但没有成功,然后我又尝试用 x86_64 构建,也不行。
这是我的终端历史记录:
用 i386 构建:
ARCHFLAGS='-arch i386' python setup.py build
返回:
running build
running build_py
creating build/lib.macosx-10.3-i386-2.7
copying _mysql_exceptions.py -> build/lib.macosx-10.3-i386-2.7
creating build/lib.macosx-10.3-i386-2.7/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
creating build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.3-i386-2.7
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -O2 -DNDEBUG -g -O3 -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.3-i386-2.7/_mysql.o -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL
In file included from _mysql.c:36:
/usr/local/mysql/include/my_config.h:1069:1: warning: "HAVE_WCSCOLL" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:8,
from pymemcompat.h:10,
from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyconfig.h:881:1: warning: this is the location of the previous definition
gcc-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -bundle -undefined dynamic_lookup build/temp.macosx-10.3-i386-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.3-i386-2.7/_mysql.so -arch x86_64
然后运行设置:
ARCHFLAGS='-arch i386' python setup.py install
结果:
running install
running bdist_egg
running egg_info
writing MySQL_python.egg-info/PKG-INFO
writing top-level names to MySQL_python.egg-info/top_level.txt
writing dependency_links to MySQL_python.egg-info/dependency_links.txt
reading manifest file 'MySQL_python.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'MANIFEST'
warning: no files found matching 'ChangeLog'
warning: no files found matching 'GPL'
writing manifest file 'MySQL_python.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.3-i386/egg
running install_lib
running build_py
copying MySQLdb/release.py -> build/lib.macosx-10.3-i386-2.7/MySQLdb
running build_ext
creating build/bdist.macosx-10.3-i386
creating build/bdist.macosx-10.3-i386/egg
copying build/lib.macosx-10.3-i386-2.7/_mysql.so -> build/bdist.macosx-10.3-i386/egg
copying build/lib.macosx-10.3-i386-2.7/_mysql_exceptions.py -> build/bdist.macosx-10.3-i386/egg
creating build/bdist.macosx-10.3-i386/egg/MySQLdb
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/__init__.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/connections.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb
creating build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/__init__.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/CLIENT.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/CR.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/ER.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/FIELD_TYPE.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/FLAG.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/constants/REFRESH.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb/constants
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/converters.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/cursors.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/release.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb
copying build/lib.macosx-10.3-i386-2.7/MySQLdb/times.py -> build/bdist.macosx-10.3-i386/egg/MySQLdb
byte-compiling build/bdist.macosx-10.3-i386/egg/_mysql_exceptions.py to _mysql_exceptions.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/connections.py to connections.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/CLIENT.py to CLIENT.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/CR.py to CR.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/ER.py to ER.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/FIELD_TYPE.py to FIELD_TYPE.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/FLAG.py to FLAG.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/constants/REFRESH.py to REFRESH.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/converters.py to converters.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/cursors.py to cursors.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/release.py to release.pyc
byte-compiling build/bdist.macosx-10.3-i386/egg/MySQLdb/times.py to times.pyc
creating stub loader for _mysql.so
byte-compiling build/bdist.macosx-10.3-i386/egg/_mysql.py to _mysql.pyc
creating build/bdist.macosx-10.3-i386/egg/EGG-INFO
copying MySQL_python.egg-info/PKG-INFO -> build/bdist.macosx-10.3-i386/egg/EGG-INFO
copying MySQL_python.egg-info/SOURCES.txt -> build/bdist.macosx-10.3-i386/egg/EGG-INFO
copying MySQL_python.egg-info/dependency_links.txt -> build/bdist.macosx-10.3-i386/egg/EGG-INFO
copying MySQL_python.egg-info/top_level.txt -> build/bdist.macosx-10.3-i386/egg/EGG-INFO
writing build/bdist.macosx-10.3-i386/egg/EGG-INFO/native_libs.txt
zip_safe flag not set; analyzing archive contents...
creating 'dist/MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg' and adding 'build/bdist.macosx-10.3-i386/egg' to it
removing 'build/bdist.macosx-10.3-i386/egg' (and everything under it)
Processing MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg
Copying MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg to /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Adding MySQL-python 1.2.3 to easy-install.pth file
Installed /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg
Processing dependencies for MySQL-python==1.2.3
Finished processing dependencies for MySQL-python==1.2.3
然后我运行 Python 检查 MySQLdb 是否正确安装:
MacBook-Pros-MacBook-Pro:MySQL-python-1.2.3 2 macbookpro$ python
Python 2.7 (r27:82508, Jul 3 2010, 20:17:05)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg/_mysql.pyc, but /Users/macbookpro/Downloads/MySQL-python-1.2.3 2 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.3-i386/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.3-i386/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg-tmp/_mysql.so, 2): no suitable image found. Did find:
/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-i386.egg-tmp/_mysql.so: mach-o, but wrong architecture
但是因为它不工作,我绝望地尝试用 -arch x86_64 构建,但也不行:
ARCHFLAGS='-arch x86_64' python setup.py build
running build
running build_py
creating build/lib.macosx-10.3-x86_64-2.7
copying _mysql_exceptions.py -> build/lib.macosx-10.3-x86_64-2.7
creating build/lib.macosx-10.3-x86_64-2.7/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb
creating build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.3-x86_64-2.7/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.3-x86_64-2.7
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -O2 -DNDEBUG -g -O3 -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.3-x86_64-2.7/_mysql.o -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL
In file included from _mysql.c:36:
/usr/local/mysql/include/my_config.h:1069:1: warning: "HAVE_WCSCOLL" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:8,
from pymemcompat.h:10,
from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyconfig.h:881:1: warning: this is the location of the previous definition
gcc-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -bundle -undefined dynamic_lookup build/temp.macosx-10.3-x86_64-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.3-x86_64-2.7/_mysql.so -arch x86_64
然后安装
ARCHFLAGS='-arch x86_64' python setup.py install
Installed /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-x86_64.egg
Processing dependencies for MySQL-python==1.2.3
Finished processing dependencies for MySQL-python==1.2.3
然后我又尝试在 Python 中检查
MacBook-Pros-MacBook-Pro:MySQL-python-1.2.3 2 macbookpro$ python
结果又失败了
>>> import MySQLdb
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-x86_64.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.3-x86_64.egg/_mysql.pyc, but /Users/macbookpro/Downloads/MySQL-python-1.2.3 2 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.3-x86_64/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.3-x86_64/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-x86_64.egg-tmp/_mysql.so, 2): no suitable image found. Did find:
/Users/macbookpro/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.3-x86_64.egg-tmp/_mysql.so: mach-o, but wrong architecture
我是不是哪里做错了?
更新 2
在 Python 中运行这段代码(如果这能帮助你调查的话)
>>> import math
>>> import sys
>>> math.log(sys.maxint, 2)
30.999999999328196
谢谢你。
2 个回答
你可能在用32位的MySQL配合64位的Python(在Snow Leopard系统中这是很常见的),或者反过来。
如果不是这种情况,那就去你下载MySQL的DMG文件里找找,看看有没有合适的MySQL-python。想了解更多信息,可以查看这里。
更新
我好像漏掉了什么……你的Python安装是32位还是64位?如果不确定,可以用下面的代码检查一下:
import math
import sys
math.log(sys.maxint, 2)
我担心你可能在这三个程序的“匹配”组合上出了问题。
问题的根本原因可能是你安装了只支持64位的MySQL客户端库。需要注意的是,MySQLdb
的构建过程(在setup_posix.py
文件中)会查询mysql_build
命令,以找到构建MySQL客户端库时使用的各种标志,并用这些信息来增强MySQLdb
扩展模块的构建。你的Python版本和MySQL客户端库必须至少有一个共同的架构。你可以选择安装一个包含32位Intel支持的MySQL客户端(-arch i386
),或者安装一个64位的Python 2.7。正因为有这样的原因,我建议使用MacPorts
来安装完整的Django解决方案(或者至少是Python和MySQL的解决方案),以避免出现这种不兼容的问题。