簡體   English   中英

使用flask_mysqldb獲取“庫未加載:libssl.1.0.0.dylib”,“原因:找不到圖像”

[英]Getting "Library not loaded: libssl.1.0.0.dylib", "Reason: image not found" with flask_mysqldb

我正在使用 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

我環顧了與我相關的多個其他問題,但似乎找不到任何可以解決我的問題的問題。 或者至少我不知道怎么做。 我真的希望有人可以幫助我。

解決了問題

在進行了更多搜索后,我找到了一個對我有用的修復程序:

第 1 步:使用 brew 安裝 openssl

brew install openssl

第二步:復制 libssl.1.0.0.dylib 和 libcrypto.1.0.0.dylib

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

請注意文件夾名稱 (1.0.1f)。 這取決於您的 openssl 版本

第 3 步:刪除現有鏈接

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

就是這樣。

以下為我使用 mysql Ver 14.14 Distrib 5.7.23,適用於 osx10.14 (x86_64) 和 Django 2.2.3。

  1. 安裝 1.1 版
   brew install openssl@1.1
  1. 將所需的庫復制到 /usr/lib 位置。 如果您在復制到 /usr/lib 位置時遇到問題,請參閱此 url 上的文章。 系統完整性變更
    cd /usr/local/Cellar/openssl@1.1/1.1.1c/lib
    sudo cp libssl.1.1.dylib libcrypto.1.1.dylib /usr/lib/
  1. 刪除和更新鏈接
    sudo rm libssl.dylib libcrypto.dylib
    sudo ln -s libcrypto.1.1.dylib libcrypto.dylib
    sudo ln -s libssl.1.1.dylib libssl.dylib

早些時候我收到以下錯誤。

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

作品。

我解決這個問題的方法是這樣的:

代替:

from flask_mysqldb import MySQL

我用了:

from flaskext.mysql import MySQL

所以這意味着我pip install flask-mysql而不是pip install flask-mysqldb 注意:如果你想獲得一個游標,用這個庫你可以做cursor = mysql.get_db().cursor()

對於 Mac,在~/.bash_profile中更新 openssl 路徑。 openssl@1.1openssl\\@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"

對我來說,我已經安裝了 openssl,解決方案很簡單——重新安裝 openssl:

brew reinstall openssl@1.1

之后,python 中的導入工作順利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM