V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2017-07-03 11:45:51 +08:00 · 6142 次点击
    这是一个创建于 2707 天前的主题,其中的信息可能已经有所发展或是发生改变。

    操作系统:

    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 条回复    2017-07-04 07:39:51 +08:00
    fffflyfish
        1
    fffflyfish  
       2017-07-03 11:52:15 +08:00
    `pip install MySQL-python`
    我记得要装一个 python-mysql 的
    fffflyfish
        2
    fffflyfish  
       2017-07-03 11:54:15 +08:00
    @fffflyfish sorry 不对,请忽视
    wellsc
        3
    wellsc  
       2017-07-03 11:57:44 +08:00 via Android
    不要用系统自带的 pye
    wellsc
        4
    wellsc  
       2017-07-03 11:58:01 +08:00 via Android
    不要用系统自带的 python
    AnyISalIn
        5
    AnyISalIn  
       2017-07-03 11:58:20 +08:00 via iPhone
    装了 mysql-devel 么
    J0k3r
        6
    J0k3r  
       2017-07-03 12:52:18 +08:00
    pip install pymysql
    g8287694
        7
    g8287694  
       2017-07-03 12:54:59 +08:00
    我记得 python 的 mysql 扩展好像一直在变的
    EvansLyb
        8
    EvansLyb  
       2017-07-03 12:57:33 +08:00
    开发环境的话用 sqlite 代替吧
    ansheng
        9
    ansheng  
       2017-07-03 13:12:50 +08:00
    pip install pymysql
    scriptB0y
        10
    scriptB0y  
       2017-07-03 13:32:29 +08:00
    mysql 这个驱动挺难装的,我当时遇到很多麻烦,而且第一次花了很长时间之后把系统的 python 搞坏了,只好重装系统( osx )

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

    头几天看到 V 友发的,我还没有试过,你可以试试,据说比 pymysql 好。
    1iuh
        14
    1iuh  
       2017-07-03 16:13:53 +08:00
    @1iuh #13 刚刚去看了一下,这个库主要是提供连接池的解决方案,应该还是需要用到 pymysql 来作为底层链接,所以我这个回复对楼主来说应该没有帮助。
    springz
        15
    springz  
       2017-07-03 16:16:52 +08:00
    你打印下 Python 的可执行文件路径,你是不是用错了
    debuggerx
        16
    debuggerx  
       2017-07-03 16:46:49 +08:00
    MySQLConnector 就挺好用的啊,写的脚本几乎不用改 2.7 和 3.5 都能正常跑
    kwdfmzhu
        17
    kwdfmzhu  
    OP
       2017-07-03 16:46:52 +08:00
    @wellsc 我用了别人的电脑,过程一样,用自带的 python 就没有问题。。。
    zhujinhe
        18
    zhujinhe  
       2017-07-03 16:47:07 +08:00
    • 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
        19
    halfcoder  
       2017-07-03 17:01:43 +08:00
    是时候换用 mysqlclient 了 https://pypi.python.org/pypi/mysqlclient
    kwdfmzhu
        20
    kwdfmzhu  
    OP
       2017-07-03 19:06:41 +08:00
    @AnyISalIn 肯定装了,不装的话编译的时候会报错的,以前遇到过。。。
    kwdfmzhu
        21
    kwdfmzhu  
    OP
       2017-07-03 19:08:28 +08:00
    @scriptB0y 版本都是对的,我下午的时候换了一台电脑,同样的步骤安装后就没有问题,看来应该是环境的问题引起的,具体是哪个环境估计得好好找了。。。
    zzd1000
        22
    zzd1000  
       2017-07-03 19:36:21 +08:00
    sudo install_name_tool -change libmysqlclient.18.dylib \
    /usr/local/mysql/lib/libmysqlclient.18.dylib \
    /Library/Python/2.7/site-packages/_mysql.so
    mingyun
        23
    mingyun  
       2017-07-03 22:50:24 +08:00
    pymysql +1
    reyno
        24
    reyno  
       2017-07-03 23:26:31 +08:00 via iPhone
    pip install pymysql
    SlipStupig
        25
    SlipStupig  
       2017-07-03 23:32:59 +08:00
    需要 mysql 开发包才能编译过....不知道支不支持 mac,linux 下面一切正常
    chengxiao
        26
    chengxiao  
       2017-07-04 07:39:51 +08:00 via iPhone
    我昨天也是因为这个原因换了 pymysql ……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:15 · PVG 17:15 · LAX 01:15 · JFK 04:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.