大局,问题是找不到所需的库。您可以使用 Apple 的开源编译器工具更改psycopg2
查找位置,并且. 这些随 OS X 一起提供,手册页随.libssl
otool
install_name_tool
man <command>
切换到psycopg2
错误消息中提到的模块目录。一到那里:
$ otool -L _psycopg.so
...
@executable_path/../lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
...
这列出了库_psycopg2.so
将要查找的内容。您可以更改它的外观install_name_tool
:
$ install_name_tool -change @executable_path/../lib/libssl.1.0.0.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib _psycopg.so
当然,您需要根据自己的位置进行调整libssl.1.0.0.dylib
。我给出的示例是默认的 Homebrew 路径,但您可能从 Anaconda 和/或 PostgreSQL 应用程序包中获得它。(brew install openssl
如果您还没有它。)您可能还需要重复 libcrypto。
执行此更改可能会失败,具体取决于_psycopg2.so
构建方式。如果发生这种情况,您可能可以使用自定义库路径自己构建模块,但我不会深入探讨。
dyld
与将 libssl 1.0.0 链接到的搜索路径(通过ln -s
或设置DYLD_*
环境变量)的方法(在此处的其他答案中给出)相比,这种方法具有更窄的优点,因此风险更小。(在一对讨论和一些代码中查看对这些方法的警告。了解更多关于dyld
through的信息man dyld
。)它的缺点是需要对psycopg2
. 选择你自己的冒险。
免责声明:此答案中的大部分内容来自我在一天内拼凑起来的知识。我不是专家。