为了账号安全,请及时绑定邮箱和手机立即绑定

自制 python@2 和 python 提供了损坏的 sqlite3

自制 python@2 和 python 提供了损坏的 sqlite3

婷婷同学_ 2021-10-26 18:04:24
我正在使用最新版本的 macOS 和自制软件,brew doctor 没有发现任何问题。我只是使用 brew install python, brew install python@2 来获取最新版本的python。当我输入 python -c "import sqlite3" 时,我收到以下错误消息:python2.7 -c "import sqlite3"130 ↵ Traceback (最近一次调用最后一次): File "", line 1, in File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/版本/ 2.7 / lib中/ python2.7 / sqlite3的/ INIT.py", line 24, in from dbapi2 import * File "/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/dbapi2.py ",第 28 行,从 _sqlite3 导入 * 导入错误:dlopen(/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_sqlite3 .so, 2): 未找到符号:_sqlite3_enable_load_extension 引用自:/usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_sqlite3 .so 预期: /usr/local/Cellar/python@2/2.7.15_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_sqlite3 中的 /usr/lib/libsqlite3.dylib 。所以python -c "import sqlite3"1 ↵ Traceback (最近一次调用): File "", line 1, in File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/库/python3.7/sqlite3/初始化.py", line 23, in from sqlite3.dbapi2 import * File "/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/sqlite3/dbapi2.py ",第 27 行,在 from _sqlite3 import * ImportError: dlopen(/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_sqlite3.cpython -37m-darwin.so, 2): 未找到符号:_sqlite3_enable_load_extension 引用自:/usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload /_sqlite3.cpython-37m-darwin.so 预期在: /usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7 中的 /usr/lib/libsqlite3.dylib /lib-dynload/_sqlite3.cpython-37m-darwin.so什么可能导致问题?我尝试下载 python 源代码并编译它,然后将 _sqlite3.so 或 _sqlite3.cpython-37m-darwin.so 文件移动到 brew 安装文件夹中,一切正常。brew 可以忘记公式中的某些内容吗?除了从源代码编译.so文件并手动解决问题之外,我还能做什么?
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我终于找到了错误隐藏的地方。我所有的 macOS 设备(包括 2 个 Pros 和 1 个 Air)都共享相同的 .zshrc 文件,出于某种原因,我添加了一个 export DYLD_LIBRARY_PATH="/Users/myname/Library/Developer/Xcode/iOS DeviceSupport/10.0.1 (14A403)/Symbols/usr/lib/:/usr/lib/" 破坏了 python sqlite 共享库文件构建的文件,因为 sqlite 最近添加了一个名为“_sqlite3_enable_load_extension”的功能。

当我将 DYLD_LIBRARY_PATH 删除到过时的目录,然后 brew restart python 一切正常。

顺便说一下,brew config 和 brew doctor 没有提供关于 DYLD_LIBRARY_PATH 的信息。下次我会遵守规则并提供这些信息。问题解决了!


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信