Python3 flask-mysqldb:库未加载:libssl.1.0.0.dylib

时间:2018-08-22 12:30:12

标签: python mysql python-3.x macos

我第一次使用flask尝试python3,并使用数据库,但遇到错误

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

我在其他与我有关的问题中四处寻找,但似乎找不到任何解决我的问题的方法。或者至少我不知道如何。 我真的希望有人能帮助我。

6 个答案:

答案 0 :(得分:2)

解决了问题

进行更多搜索后,我发现了一个对我有用的修复程序:

第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/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

就是这样。

答案 1 :(得分:0)

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

  1. 安装版本1.1
   brew install openssl@1.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/
  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

答案 2 :(得分:0)

之前,我遇到以下错误。

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目录不存在,我将其保存了。

  

/ usr / local / opt / openssl /

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

import gdal

有效。

答案 3 :(得分:0)

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

代替:

from flask_mysqldb import MySQL

我用过:

from flaskext.mysql import MySQL

所以这意味着我pip install flask-mysql而不是pip install flask-mysqldb。 注意:如果要获取游标,可以使用此lib执行cursor = mysql.get_db().cursor()

答案 4 :(得分:0)

如果是Mac,请在~/.bash_profile中更新openssl路径。将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"

答案 5 :(得分:0)

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

brew reinstall openssl@1.1

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