python setup.py egg_info mysqlclient

时间:2017-05-02 14:29:27

标签: python macos python-3.x mysql-python macos-sierra

尝试在Python 3.6.0上使用pip3安装mysqlclient

$ pip3 install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-1.3.10.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 54, in get_config
        libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 54, in <listcomp>
        libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 12, in dequote
        if s[0] in "\"'" and s[0] == s[-1]:
    IndexError: string index out of range

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/

已经

brew install mysql-connector-c

但仍然收到此错误

9 个答案:

答案 0 :(得分:35)

这对我有用:

  1. brew install mysql-connector-c

  2. 修改mysql_config(找到它:which mysql_config

  3. 在mysql_config中更正:

    # Create options 
    libs="-L$pkglibdir"
    libs="$libs -l "
    

    它应该是:

    # Create options 
    libs="-L$pkglibdir"
    libs="$libs -lmysqlclient -lssl -lcrypto"
    
    1. brew info openssl
    2. ,最后是pip3 install mysqlclient

答案 1 :(得分:6)

我先解决了这个安装libmysqlclient-dev的问题:

for req in $(cat requirements.txt); do sudo pip3.5 install $req; done

希望它适合你。

答案 2 :(得分:5)

广泛的问题排查后,我发现brew install mysql-connector-c无效。

问题源于系统无法识别mysql_config已安装(mysql-connector-c本质上是什么)。 Homebrew的方法(打开参数)在mysql-connector-c中安装/Cellar/并创建符号链接到/usr/local/bin/目录似乎导致问题,因为Python试图遵循符号链接。

要解决此问题,我执行了以下操作:

  1. brew uninstall mysql-connector-c
  2. 从Oracle的MySQL站点下载/安装MacOS X MySQL Connector/C
    • 注意:只需下载.dmg,这里不需要复杂......
  3. 重新启动MacOS终端(或iTerm2)以获得良好的衡量标准
  4. which mysql_config

    • 您应该看到正确的路径/usr/local/bin/mysql/bin/mysql_config
  5. 激活virtualenv(如果适用)

  6. pip install mysqlclient
  7. 可能还有其他方法可以使用Homebrew,但这是我找到的最简单的解决方案。

    请注意,mysqlclient GitHub README.md还声明需要Python3的C-developer头。我假设mysql-connector-c包括那些;但是,如果您遇到更多问题,您也可以安装Xcode Developer CI工具。

    xcode-select --install

    它们包括C编译器和Apple的其他开发人员实用程序。阅读更多here

答案 3 :(得分:1)

在开发基于django的网站时遇到这个问题,我需要设置网站与mysql数据库进行通信。我没有使用自制软件来完成任何安装。

由于我在安装了Anaconda的MacOS上进行开发,我发现Anaconda存在问题。在不知道细节的情况下,我能够使用conda install mysqlclient

安装mysqlclient

希望能帮助其他人解决这个问题。

答案 4 :(得分:1)

对于特定程序上的Python 2.7:

  1. sudo chown -R $ USER /Library/Python/2.7
  2. 简单安装mysql@5.7
  3. 简单安装mysql-connector-c
  4. brew链接-覆盖mysql@5.7
  5. echo'export PATH =“ / usr/local/opt/mysql@5.7/bin:$ PATH”'>>〜/ .bash_profile
  6. sed -i -e's / libs =“ $ libs -l” / libs =“ $ libs -lmysqlclient -lssl -lcrypto” / g'/ usr / local / bin / mysql_config
  7. pip安装MySql-python

这解决了我运行的程序在Python 2.7和较旧版本的MySql上运行的所有问题

答案 5 :(得分:0)

其他选项对我不起作用,但这对我有用:

对于Python3:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip3 install mysqlclient

对于Python2:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip2 install mysqlclient

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install mysqlclient

答案 6 :(得分:0)

我个人建议使用pymysql而不是mysqlclient。您可以使用以下方法安装pymysql

pip install pymysql

您还可以将SQLAlchemy URL编辑为:

mysql+pymysql://username:passwd@hostname/database

答案 7 :(得分:0)

我刚开始使用python,尝试做pip3 install mysqlclient来将Django连接到MySQL 8.0.19时遇到了类似的问题,但就我而言,它在具有Python 3.8的macOS Catalina 10.15.5上。我也尝试过brew install mysql-connector-c,但这也给我带来了很多麻烦。这就是我设法使其工作的方式。

  1. brew reinstall mysql
  2. brew install mysql-client
  • 注意:安装mysql-client后,我在刚刚遵循的终端中收到以下消息,并使所有工作正常进行。
  • mysql-client是仅桶式的,这意味着它没有符号链接到/ usr / local,因为它与mysql(包含客户端库)冲突。如果您需要在PATH中首先运行mysql-client:
  1. echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
  • 为使编译器找到mysql-client,您可能需要设置:
  1. export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
  2. export CPPFLAGS="-I/usr/local/opt/mysql-client/include"
  • 然后,我只是尝试再次安装mysqlclient,它起作用了。我还在python .venv环境中进行了尝试,并且使用以下命令效果很好:
  1. pip3 install mysqlclient

参考:Install mysqlclient for Django Python on Mac OS X Sierra

希望它能像今天对我一样起作用。 问候, 阿尔弗雷多

答案 8 :(得分:0)

这在MacOS 10+上对我有用。 与其直接使用pip安装mysqlclient,不如先使用此命令

brew install mysql

如果您没有Brew的现有设置,请从其主页安装brew。

然后运行

pip install mysqlclient

这应该有效!另外,还要确保为项目设置了virtualenv,因为这是分别维护每个项目的venv的良好实践之一。