【问题标题】:python setup.py egg_info mysqlclientpython setup.py egg_info mysqlclient
【发布时间】:2017-09-30 03:07:41
【问题描述】:

尝试在 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

但仍然出现此错误

【问题讨论】:

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


    【解决方案1】:

    这对我有用:

    1. brew install mysql-connector-c

    2. 编辑mysql_config(找到它:which mysql_config

    在 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

    【讨论】:

    • 像魅力一样工作!我认为最好的解决方案!非常感谢!!
    • 您应该更改权限或使用 Vim 编辑它并使用 wq! 保存更改
    • 太棒了!也为我工作。非常感谢。 :D
    • 你有开放的 ssl 库吗?尝试 brew install openssl
    • 对于 python 2.7 你不需要 cypto。 SSL 将做客户端。此外,添加以将安装设置为读取 ssl:export LDFLAGS="-L/usr/local/opt/openssl/lib"(您可以通过运行brew info openssl 找到此信息)。
    【解决方案2】:

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

    sudo apt-get install libmysqlclient-dev
    

    希望它对你有用。

    【讨论】:

    • OP 提到“OSX”
    • @FranklinAntony 抱歉,它在 Linux 上给我修复了同样的错误,但对于 Mac,它会是:brew install mysql 看到这个链接:stackoverflow.com/questions/1857861/…
    【解决方案3】:

    广泛排除故障后,我发现brew install mysql-connector-c 只是不起作用。

    问题源于系统无法识别 mysql_config 已安装(mysql-connector-c 本质上就是这样做的)。 Homebrew 在其 /Cellar/ 中安装 mysql-connector-c 并创建指向 /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

    可能还有其他方法可以使用 Homebrew,但这是我找到的最直接的解决方案。

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

    xcode-select --install

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        对于特定程序上的 Python 2.7:

        1. sudo chown -R $USER /Library/Python/2.7
        2. brew install mysql@5.7
        3. brew install mysql-connector-c
        4. brew 链接 --overwrite 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 install MySql-python

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

        【讨论】:

          【解决方案6】:

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

          对于 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

          【讨论】:

            【解决方案7】:

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

            pip install pymysql

            您可以将您的 SQLAlchemy URL 编辑为:

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

            【讨论】:

              【解决方案8】:

              我刚开始使用 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 仅是 keg-only,这意味着它没有符号链接到 /usr/local,因为它与 mysql(包含客户端库)冲突。如果您需要在 PATH 运行中首先使用 mysql-client:
              1. echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' &gt;&gt; ~/.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

              希望这能像今天对我一样有效。 问候, 阿尔弗雷多

              【讨论】:

                【解决方案9】:

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

                brew install mysql
                

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

                然后运行

                pip install mysqlclient
                

                这应该可以!还要确保为您的项目设置了 virtualenv,因为为每个项目单独维护 venv 是一种很好的做法。

                【讨论】:

                  猜你喜欢
                  • 2018-07-02
                  • 1970-01-01
                  • 2015-05-01
                  • 1970-01-01
                  • 2018-11-12
                  • 2018-05-18
                  • 2017-05-28
                  • 2018-01-28
                  • 2019-07-03
                  相关资源
                  最近更新 更多