【问题标题】:Error installing mysql-python: library not found for -lssl安装 mysql-python 时出错:找不到 -lssl 的库
【发布时间】:2017-03-28 00:29:14
【问题描述】:

我在安装 mysql-python 时遇到问题。创建了一个新的 virtualenv 并在安装 mysql-python 时...这是错误消息:

(env)$ pip install mysql-python
Collecting mysql-python
...

clang -bundle -undefined dynamic_lookup -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk build/temp.macosx-10.12-x86_64-2.7/_mysql.o -L/usr /local/Cellar/mysql/5.7.16/lib -lmysqlclient -lssl -lcrypto -o build/lib.macosx-10.12-x86_64-2.7/_mysql.so
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1

使用自制软件,我已经安装了:

  • libressl
  • openssl
  • openssl@1.1
  • mysql

已经尝试brew link,但 brew 拒绝这样做。

操作系统是 MacOS Sierra。

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: pip virtualenv homebrew mysql-python


    【解决方案1】:

    我尝试更新 Xcode 的 CLT,卸载 mysql,检查 mysql_config 等,但没有运气。

    我发现运行brew info openssl 显示:

    ...
    
    For compilers to find openssl you may need to set:
      export LDFLAGS="-L/usr/local/opt/openssl/lib"
      export CPPFLAGS="-I/usr/local/opt/openssl/include"
    
    ...
    

    运行这两个命令,然后是 pip install,对我有用(在我安装 mysqlclient 时)。

    【讨论】:

    • 谢谢,这有帮助,但应该运行“brew info openssl”而不是“brew info ssl”,然后我运行所有帮助我成功运行“pip3 install mysqlclient”的“导出”命令
    • @FFinn 正确,感谢您指出这一点,我已经更新了答案。
    • 节省了一天。 @alstr
    【解决方案2】:

    对我来说,在 mac 上运行这个命令解决了这个问题

    LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
    

    实际上我们需要设置 ssl 库路径来解决这个问题。

    【讨论】:

    • 奇怪的是,这对我有用。我不知道为什么,但它奏效了。
    • 嗨@hafiz-siddiq,还有另一个像你一样的答案stackoverflow.com/a/46888783/2247042,这不会增加价值。
    【解决方案3】:

    我可以通过运行来修复错误:

    pip install -r requirements.txt --global-option=build_ext --global-option="-I/usr/local/opt/openssl/include" --global-option="-L/usr/local/opt/openssl/lib"
    

    【讨论】:

    • 这对我有用。 Brew 状态 - openssl 仅用于小桶,这意味着它没有符号链接到 /usr/local,因为 macOS 提供了 LibreSSL。
    【解决方案4】:

    对于那些使用 Brew 安装 MySQL v5.7 的人

    卸载mysql-connector-c

    $ brew uninstall mysql-connector-c
    

    安装特定版本,很可能需要卸载其他已安装的版本

    $ brew install mysql@5.7
    

    您需要将其添加到PATH,因为这是“仅限桶装”公式,安装后会打印出来

    $ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
    

    用适当的文件替换~/.zshrc

    安装mysql-connector-c

    $ brew install mysql-connector-c
    

    检查是否安装正确

    $ which mysql
    # /usr/local/opt/mysql@5.7/bin/mysql
    
    $ mysql_config
    # Usage: /usr/local/opt/mysql@5.7/bin/mysql_config [OPTIONS]
    Compiler: Clang 10.0.0.10001145
    Options:
            --cflags         [-I/usr/local/opt/mysql@5.7/include/mysql ]
            --cxxflags       [-I/usr/local/opt/mysql@5.7/include/mysql ]
            --include        [-I/usr/local/opt/mysql@5.7/include/mysql]
            --libs           [-L/usr/local/opt/mysql@5.7/lib -lmysqlclient -lssl -lcrypto]
            --libs_r         [-L/usr/local/opt/mysql@5.7/lib -lmysqlclient -lssl -lcrypto]
            --plugindir      [/usr/local/opt/mysql@5.7/lib/plugin]
            --socket         [/tmp/mysql.sock]
            --port           [0]
            --version        [5.7.24]
            --libmysqld-libs [-L/usr/local/opt/mysql@5.7/lib -lmysqld -lssl -lcrypto]
            --variable=VAR   VAR is one of:
                    pkgincludedir [/usr/local/opt/mysql@5.7/include/mysql]
                    pkglibdir     [/usr/local/opt/mysql@5.7/lib]
                    plugindir     [/usr/local/opt/mysql@5.7/lib/plugin]
    

    现在安装mysqlclient

    $ pip install mysqlclient
    

    【讨论】:

      【解决方案5】:

      通过以下步骤解决:

      brew uninstall mysql
      brew install mysql-connector-c
      pip install mysql-python
      brew unlink mysql-connector-c
      brew install mysql
      

      在这里找到答案https://stackoverflow.com/a/25920020/576192

      不确定这是否是正确的方法,但这就是我设法解决的方法。

      【讨论】:

        【解决方案6】:

        您可以明确设置 ssl 库路径。

        LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
        

        【讨论】:

        • 安装的库。但是,它无法运行,出现分段错误 11
        • 解决了我的问题。
        • 也解决了我的问题。
        【解决方案7】:

        如果你想安装mysql-python,我建议你安装mysqlclient。这两个模块的作者是相同的。到目前为止,作者都转而继续维护mysqlclientmysqlclient 支持 Python 2 和 Python 3。您可以使用与 mysql-python 相同的代码。 Blew 是我给你的安装解决方案。

        $ brew info openssl
        $ brew unlink mysql-connector-c
        $ brew install mysql
        $ brew link --overwrite mysql-connector-c
        $ pip install mysqlclient
        

        如果pip install mysqlclient之前有错误。请根据methane's answer修复。 然后再次运行pip install mysqlclient

        【讨论】:

          【解决方案8】:

          通过这样做为我工作

          $ brew uninstall mysql
          $ brew install mysql-connector-c
          $ brew unlink mysql-connector-c
          $ brew install mysql
          $ pip install mysql-python
          

          上面的配方稍有改动(注意:pip install 在最后!)

          【讨论】:

          • 这也修复了我收到的错误ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. 这修复了此替换最后一行pip3 install mysqlclient的问题
          【解决方案9】:

          我终于可以修复它了

          xcode-select --install

          我确定我已经这样做了……但显然我没有。绝对值得一试!

          【讨论】:

            【解决方案10】:

            或从 MySQL 开发站点下载并安装 .dmg:https://dev.mysql.com/downloads/file/?id=467834

            【讨论】:

            • 这也可以,但它也让我感到困惑,你可以通过 3 种方式在你的 Mac 上安装 mysqlbrew pip 以及 dmg 文件。如果你有不止一个,它会成为一场噩梦,出现奇怪的错误或使用pipbrew 破坏 DMG 安装。
            猜你喜欢
            • 2014-12-04
            • 2014-11-16
            • 2019-01-13
            • 2019-11-24
            • 2022-09-23
            • 1970-01-01
            • 2019-06-11
            • 2017-08-08
            相关资源
            最近更新 更多