大图,问题在于找不到所需的库。您可以更改其中psycopg2
的外观为libssl
使用苹果的开源编译工具,otool
和install_name_tool
。这些随OS X一起提供,手册页面随一起提供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
构建,执行此更改可能会失败。如果发生这种情况,您可能可以使用自定义库路径自己构建模块,但是我不会涉及到这一点。
与将libssl 1.0.0链接到dyld
的搜索路径(通过ln -s
或设置DYLD_*
环境变量)的方法(在此处提供其他答案)相比,这种方法的优点是更窄,因此风险更低。(见警告反对这些在接近一双的讨论和一些代码。了解更多关于dyld
通过man dyld
)。它需要被重复的每个副本的缺点psycopg2
。选择自己的冒险。
免责声明:此答案中的大部分内容来自于我在一天内拼凑而成的知识。我不是专家。