我用 Python 创建了一个应用程序,该应用程序经过测试并在我的计算机上完美运行(Mac OSX 10.8.3 Python2.7.3 Postgresql9.2.4 Psycopg2-2.5)。该应用程序是使用 py2app 编译的,我可以看到构建成功地将所有包/模块包含到应用程序内容文件夹中。
Psycopg2 在我的机器上正确导入,并且应用程序运行良好,但是当应用程序在另一台计算机上运行时(我尝试了 4 台不同的计算机......),它无法打开,并且控制台消息显示 ImportError: dlopen(/ Applications/app.app/Contents/Resources/lib/python2.7/psycopg2/_psycopg.so,2):未加载库:libpq.5.dylib
我已经通过 SO 和 Google 广泛搜索和修改了我的代码,但无济于事。psycopg2 链接也没有专门解决这个问题。http://initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os-x/
我已经多次删除并重新安装了 psycopg2 和 postgresql,从源代码、macports、自制软件等构建。上面列出了我当前的环境,使用自制软件安装了 postgresql 9.2.4,并在显式链接 pg_config 位置时从源代码安装了 psycopg2-2.5在 setup.cfg
当我在 _psycopg.so 上运行 otool -l 时,我得到以下信息
/usr/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.4.0)
/usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 47.0.0)
/usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 47.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
我构建的应用程序如何包含(或将目标用户指向文件,如果可用)这些文件?这是正确的方法吗?Py2app 当然不会在“框架”选项中包含来自 /usr/lib/ 的系统文件。