使用 flask_mysqldb 获取“未加载库:libssl.1.0.0.dylib”、“原因:找不到图像”

Posted

技术标签:

【中文标题】使用 flask_mysqldb 获取“未加载库:libssl.1.0.0.dylib”、“原因:找不到图像”【英文标题】:Getting "Library not loaded: libssl.1.0.0.dylib", "Reason: image not found" with flask_mysqldb 【发布时间】:2019-01-28 17:18:34 【问题描述】:

我正在使用 Flask 试用 Python 3,但在使用数据库时遇到以下错误。

我在 macOS High Sierra v. 10.13.6 上执行此操作

我的导入代码如下:

from flask import Flask, render_template, flash, redirect, url_for, session, request, logging
from data import Articles
from flask_mysqldb import MySQL
from wtforms import Form, StringField, TextAreaField, PasswordFeild, validators
from passlib.hash import sha256_crypt

我在尝试运行应用程序时遇到的错误如下:

Traceback (most recent call last):
    File "app.py", line 3, in <module>
        from flask_mysqldb import MySQL  
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site- 
          packages/flask_mysqldb/__init__.py", line 1, in <module> import MySQLdb  
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site- 
          packages/MySQLdb/__init__.py", line 18, in <module> import _mysql  
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site- 
             packages/_mysql.cpython-37m-darwin.so, 2): Library not loaded: 
             libssl.1.0.0.dylib  
    Referenced from: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site- 
                     packages/_mysql.cpython-37m-darwin.so  
    Reason: image not found

我已经查看了与我相关的多个其他问题,但似乎找不到任何可以解决我的问题的问题。或者至少我不知道怎么做。 我真的希望有人可以帮助我。

【问题讨论】:

brew install mysql ? 已经完成,同样的错误:/ pip install mysql。 @M.Quist 希望它有效 阅读本文。这可能会有所帮助***.com/questions/6383310/… @jtlz2 不用担心,感谢您的帮助! 【参考方案1】:

解决了问题

在进行了更多搜索后,我找到了一个对我有用的修复:

第 1 步:使用 brew 安装 openssl

brew install openssl

第 2 步:复制 libssl.1.0.0.dylib 和 libcrypto.1.0.0.dylib

cd /usr/local/Cellar/openssl/1.0.1f/libsudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/lib/

记下文件夹名称 (1.0.1f)。这取决于您的 openssl 版本

第 3 步:删除现有链接

sudo rm libssl.dylib libcrypto.dylibsudo ln -s libssl.1.0.0.dylib libssl.dylibsudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib

就是这样。

【讨论】:

【参考方案2】:

以下内容适用于 mysql Ver 14.14 Distrib 5.7.23,适用于 osx10.14 (x86_64) & Django 2.2.3。

    安装 1.1 版
   brew install openssl@1.1
    将所需的库复制到 /usr/lib 位置。如果您无法复制到 /usr/lib 位置,请参阅此 url 上的文章。 System Integrity Change
    cd /usr/local/Cellar/openssl@1.1/1.1.1c/lib
    sudo cp libssl.1.1.dylib libcrypto.1.1.dylib /usr/lib/
    删除和更新链接
    sudo rm libssl.dylib libcrypto.dylib
    sudo ln -s libcrypto.1.1.dylib libcrypto.dylib
    sudo ln -s libssl.1.1.dylib libssl.dylib

【讨论】:

感谢您的解决方案!这是为我做的那个。我必须禁用 Mac 的 SIP 才能将文件复制到 /usr/lib。也许可能存在一个非 SIP 目录,它可以在不进入恢复模式的情况下被复制 您也可以在不禁用 MacOS SIP 的情况下解决此问题,只需将文件复制到 /usr/local/lib。这对我有用。 将这些文件复制到 /usr/lib 不是一个好主意:apple.stackexchange.com/questions/238828/… 它显示“不允许操作”。对于sudo cp libssl.1.1.dylib libcrypto.1.1.dylib /usr/lib/【参考方案3】:

之前我收到以下错误。

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/osgeo/_gdal.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
  Referenced from: /usr/local/opt/gdal/lib/libgdal.20.dylib
  Reason: image not found

用于以下导入

import gdal

只需在所需位置创建目录

我的安装在这里...

/usr/local/Cellar/openssl/1.0.2s/

我在他们想要的位置创建了一个目录。 openssl 目录不存在,我 mkdir 编辑了它。

/usr/local/opt/openssl/

然后根据需要复制文件夹。现在

import gdal

有效。

【讨论】:

【参考方案4】:

我解决这个问题的方法是这样的:

代替:

from flask_mysqldb import MySQL

我用过:

from flaskext.mysql import MySQL

所以这意味着我pip install flask-mysql 而不是pip install flask-mysqldb。 注意:如果你想获得一个游标,使用这个库你可以做cursor = mysql.get_db().cursor()

【讨论】:

【参考方案5】:

对于 Mac,在您更新 openssl 路径的 ~/.bash_profile 中。将openssl@1.1 转义为openssl\@1.1

export PATH="/usr/local/opt/openssl\@1.1/bin:$PATH" export LDFLAGS="-L/usr/local/opt/openssl\@1.1/lib" export CPPFLAGS="-I/usr/local/opt/openssl\@1.1/include"

【讨论】:

【参考方案6】:

对我来说,我已经安装了 openssl,解决方案很简单——重新安装 openssl:

brew reinstall openssl@1.1

之后,python 中的导入工作顺利。

【讨论】:

以上是关于使用 flask_mysqldb 获取“未加载库:libssl.1.0.0.dylib”、“原因:找不到图像”的主要内容,如果未能解决你的问题,请参考以下文章

错误:跳过分析“flask_mysqldb”:找到模块但没有类型提示或库存根

未加载库/未找到图像 - Swift 4.0

Mac M1 未加载 Openssl 库(未加载库:/usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib)

Swift dyld:未加载库 - 使用 CocoaPods

iOS 8 动态框架:未加载库

在设备上的 tvOS Top Shelf Extension 中使用 Alamofire 时出现“dyld:未加载库”错误