OS X 10.11 下Python-MySQLdb无法使用的问题

    xiaoxiao2021-03-25  149

    身为一个不作就不会死的程序员

    本文将记录如何作死,在作活的过程。


    环境: MacBook Pro (13-inch, Mid 2012) macOS 10.12.3 (16D32) Darwin 16.4.0

    Python 2.7.10 Django 1.10.4 mysql 5.6.33


    原因:学习python, 为了使apache像支持PHP一样支持 python 过程:环境配置失败 后果:导致MySQLdb 引用失败(应是路径问题) 错误信息: File “/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py”, line 16, in raise ImproperlyConfigured(“Error loading MySQLdb module: %s” % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.9-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.9-intel.egg/_mysql.so Reason: image not found

    解决过程:

    -终端执行 import MySQLdb,导入失败。 -pip 重装了MySQLdb -重新执行import MySQLdb,依然失败。 错误信息:Library not loaded: libmysqlclient.18.dylib

    百度如下:

    需要确定MySQL是否为64位版本,然后需要导入mysql的路径在终端执行 vim ~/.bash_profile在该文件中输入 export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 保存后执行(:wq)在终端执行 source ~/.bash_profile在终端执行 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

    检查电脑 .bash_profile的配置信息后,发现正常。 直接执行了第五步的命令,出现以下信息: ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted 出现这个提示的原因是: OS X 10.11 中System Integrity Protection 的功能,阻止了写入的操作的,默认是开启的,需要关闭。(自己配置apache python时更改过这里)

    关闭方式: 重启电脑,开机时按住 cmd + R,进入 Recovery 模式。然后打开终端工具 ,执行关闭命令:csrutil diable (开启:csrutil enable),然后再次重启电脑即可。 关闭以后重新执行上边的第五步,OK。(参考来源http://blog.csdn.net/u012763043/article/details/49056299)

    Pycharm运行项目又报错了 错误描述 django.db.utils.OperationalError: (2003, “Can’t connect to MySQL server on ‘localhost’ (10061)”)

    解决办法 将/private/etc/hosts文件中下面这名话放开: 127.0.0.1 localhost 或者 将 HOST字段改为 ‘127.0.0.1’ 结果发现自己的配置中没有这个问题。

    然后看了系统设置中的MySQL 发现mysql server 暂停了服务,restart 竟然启动不起来,在MySQL操作面板上会提示“Warning:The /usr/local/MySQL/data directory is not owned by the ‘mysql‘ or ‘_mysql‘ ”, Mac 下面运行 “sudo chown -R _mysql:wheel /usr/local/mysql/data” 再次restart 成功。(参考来源http://blog.csdn.net/gaixm/article/details/49422511)

    但是当重新开启System Integrity Protection 的功能后,又不行了。

    有教程说不关闭System Intergrity Protection ,在终端执行: sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.9-intel.egg/_mysql.so

    我执行的时候报了一个关于Xcode的错误(我装了两个Xcode7.3.1和8.2),遂放弃了这种方法。

    转载请注明原文地址: https://ju.6miu.com/read-8886.html

    最新回复(0)