推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
kwdfmzhu
V2EX  ›  Python

Mac Python 无法使用 MySQLdb

  •  
  •   kwdfmzhu · Jul 3, 2017 · 7553 views
    This topic created in 3413 days ago, the information mentioned may be changed or developed.

    操作系统:

    Mac os,版本:10.12.5,64bit Mysql:版本 5.7.18 Homebrew

    使用 brew 安装了 mysql ( Server version: 5.7.18 Homebrew ) ,然后下载了 MySQLdb,正确安装尅没有报错,安装成功后报错,报错如下:

    MySQL_python-1.2.5-py2.7.egg-info lazybone$ python -c "import MySQLdb"
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/MySQLdb/__init__.py", line 19, in <module>
        import _mysql
    ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so, 2): Symbol not found: _mysql_affected_rows
      Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so
      Expected in: flat namespace
     in /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so
    

    尝试如下解决方案,均未果:

    1. 替换 MySQL_python-1.2.5,也无效;
    2. 重新安装 pip uninstall MySQL-python,brew uninstall mysql,brew install mysql --universal,pip install MySQL-python
    3. 增加环境变量配置,export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.18_1/lib/,export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH

    _mysql.so 相关信息:

    MySQL_python-1.2.5-py2.7.egg-info lazybone$ file /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so
    /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so: Mach-O universal binary with 2 architectures: [x86_64: Mach-O 64-bit bundle x86_64] [i386: Mach-O bundle i386]
    /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
    /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/_mysql.so (for architecture i386): Mach-O bundle i386
    

    ps:同样机器配置,同事可以安装并使用!!!( Mysql 5.7.18 Homebrew + MySQL_python-1.2.4b4 )

    26 replies  •  2017-07-04 07:39:51 +08:00
    fffflyfish
    fffflyfish
    Jul 3, 2017
    1
    `pip install MySQL-python`
    我记得要装一个 python-mysql 的
    fffflyfish
    fffflyfish
    Jul 3, 2017
    2
    @fffflyfish sorry 不对,请忽视
    wellsc
    wellsc
    Jul 3, 2017 via Android
    3
    不要用系统自带的 pye
    wellsc
    wellsc
    Jul 3, 2017 via Android
    4
    不要用系统自带的 python
    AnyISalIn
    AnyISalIn
    Jul 3, 2017 via iPhone
    5
    装了 mysql-devel 么
    J0k3r
    J0k3r
    Jul 3, 2017
    6
    pip install pymysql
    g8287694
    g8287694
    Jul 3, 2017
    7
    我记得 python 的 mysql 扩展好像一直在变的
    EvansLyb
    EvansLyb
    Jul 3, 2017
    8
    开发环境的话用 sqlite 代替吧
    ansheng
    ansheng
    Jul 3, 2017
    9
    pip install pymysql
    scriptB0y
    scriptB0y
    Jul 3, 2017
    10
    mysql 这个驱动挺难装的,我当时遇到很多麻烦,而且第一次花了很长时间之后把系统的 python 搞坏了,只好重装系统( osx )

    一定要在虚拟环境用这个东西……
    而且安装的时候,貌似 mysql 服务是要开着的
    另外我怀疑你这个 mysql 版本和 python-mysql 版本不对应,要注意 64 位还是 32 位,python-myql 版本支持不支持当前 python 版本和 mysql 版本
    wanxi3
    wanxi3
    Jul 3, 2017
    11
    建议使用 pymysql 代替
    robinshi2010
    robinshi2010
    Jul 3, 2017
    12
    pip install PyMySQL
    1iuh
    1iuh
    Jul 3, 2017
    13
    https://pypi.python.org/pypi/DBUtils/1.2

    头几天看到 V 友发的,我还没有试过,你可以试试,据说比 pymysql 好。
    1iuh
    1iuh
    Jul 3, 2017
    14
    @1iuh #13 刚刚去看了一下,这个库主要是提供连接池的解决方案,应该还是需要用到 pymysql 来作为底层链接,所以我这个回复对楼主来说应该没有帮助。
    springz
    springz
    Jul 3, 2017
    15
    你打印下 Python 的可执行文件路径,你是不是用错了
    debuggerx
    debuggerx
    Jul 3, 2017
    16
    MySQLConnector 就挺好用的啊,写的脚本几乎不用改 2.7 和 3.5 都能正常跑
    kwdfmzhu
    kwdfmzhu
    OP
    Jul 3, 2017
    17
    @wellsc 我用了别人的电脑,过程一样,用自带的 python 就没有问题。。。
    zhujinhe
    zhujinhe
    Jul 3, 2017
    18
    • You installed python
    • You did brew install mysql
    • You did export PATH=$PATH:/usr/local/mysql/bin
    And finally, you did pip install MySQL-Python

    via: https://stackoverflow.com/questions/25459386/mac-os-x-environmenterror-mysql-config-not-found/25491082#25491082
    halfcoder
    halfcoder
    Jul 3, 2017
    19
    是时候换用 mysqlclient 了 https://pypi.python.org/pypi/mysqlclient
    kwdfmzhu
    kwdfmzhu
    OP
    Jul 3, 2017
    20
    @AnyISalIn 肯定装了,不装的话编译的时候会报错的,以前遇到过。。。
    kwdfmzhu
    kwdfmzhu
    OP
    Jul 3, 2017
    21
    @scriptB0y 版本都是对的,我下午的时候换了一台电脑,同样的步骤安装后就没有问题,看来应该是环境的问题引起的,具体是哪个环境估计得好好找了。。。
    zzd1000
    zzd1000
    Jul 3, 2017
    22
    sudo install_name_tool -change libmysqlclient.18.dylib \
    /usr/local/mysql/lib/libmysqlclient.18.dylib \
    /Library/Python/2.7/site-packages/_mysql.so
    mingyun
    mingyun
    Jul 3, 2017
    23
    pymysql +1
    reyno
    reyno
    Jul 3, 2017 via iPhone
    24
    pip install pymysql
    SlipStupig
    SlipStupig
    Jul 3, 2017
    25
    需要 mysql 开发包才能编译过....不知道支不支持 mac,linux 下面一切正常
    chengxiao
    chengxiao
    Jul 4, 2017 via iPhone
    26
    我昨天也是因为这个原因换了 pymysql ……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1131 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 23:53 · PVG 07:53 · LAX 15:53 · JFK 18:53
    ♥ Do have faith in what you're doing.