在 Mac OS (Yosemite) 上使用 psycopg2 时出现问题
Problems using psycopg2 on Mac OS (Yosemite)
目前我正在安装 psycopg2 以便在 python 的 eclipse 中工作。
我发现了很多问题:
- 第一个问题
sudo pip3.4 install psycopg2
不工作,它显示以下消息
Error: pg_config executable not found.
固定为:export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”
- 当我在我的项目中导入 psycopg2 时,我得到:
ImportError:
dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Library libssl.1.0.0.dylib
Library libcrypto.1.0.0.dylib
固定为:
sudo ln -s /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /usr/lib
sudo ln -s /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /usr/lib
- 现在我得到:
ImportError:
dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so,
2): Symbol not found: _lo_lseek64 Referenced from:
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Expected in: /usr/lib/libpq.5.dylib in
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
你能帮帮我吗?
您需要更换/usr/lib/libpq.5.dylib库,因为它的版本太旧了。
这是我对这个问题的解决方案:
$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
$ sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib
我正在使用 yosemite、postgres.app 和 django。这让 psycopg2 为我正确加载,但一个区别是我的 libpq.5.dylib
文件位于 /Applications/Postgres.app/Contents/Versions/9.4/lib
.
因此我的第二行是 sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
如果您使用的是 PostgresApp,则需要运行以下两个命令:
sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
好吧,我给出我的解决方案,这个问题与c的版本有关。所以,我刚刚输入:
CFLAGS='-std=c99' pip install psycopg2==2.6.1
对于那些在 El Capitan 上无法使用@KungFuLucky7 的答案的人 - 我使用以下方法解决了这个问题(根据需要调整路径以匹配您的路径)。
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so
这是一个在 El Capitan 上对我有用的修复程序,它不需要重新启动来解决 OS X El Capitan 系统完整性保护 (SIP):
brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql
在 El Capitan 中,我使用了与@Forbze 相同的解决方案,但多了 2 个命令如下。
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.3/lib/libpq.5.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
完美运行!
我能够通过使用 psycopg2-binary 而不是 psycopg2 在我的 Mac(运行 Catalina,10.15.3)上解决这个问题。
pip3 uninstall psycopg2
pip3 install psycopg2-binary
目前我正在安装 psycopg2 以便在 python 的 eclipse 中工作。
我发现了很多问题:
- 第一个问题
sudo pip3.4 install psycopg2
不工作,它显示以下消息
Error: pg_config executable not found.
固定为:export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”
- 当我在我的项目中导入 psycopg2 时,我得到:
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Library libssl.1.0.0.dylib Library libcrypto.1.0.0.dylib
固定为:
sudo ln -s /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /usr/lib
sudo ln -s /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /usr/lib
- 现在我得到:
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _lo_lseek64 Referenced from: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Expected in: /usr/lib/libpq.5.dylib in /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
你能帮帮我吗?
您需要更换/usr/lib/libpq.5.dylib库,因为它的版本太旧了。
这是我对这个问题的解决方案:
$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
$ sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib
我正在使用 yosemite、postgres.app 和 django。这让 psycopg2 为我正确加载,但一个区别是我的 libpq.5.dylib
文件位于 /Applications/Postgres.app/Contents/Versions/9.4/lib
.
因此我的第二行是 sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
如果您使用的是 PostgresApp,则需要运行以下两个命令:
sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
好吧,我给出我的解决方案,这个问题与c的版本有关。所以,我刚刚输入:
CFLAGS='-std=c99' pip install psycopg2==2.6.1
对于那些在 El Capitan 上无法使用@KungFuLucky7 的答案的人 - 我使用以下方法解决了这个问题(根据需要调整路径以匹配您的路径)。
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so
这是一个在 El Capitan 上对我有用的修复程序,它不需要重新启动来解决 OS X El Capitan 系统完整性保护 (SIP):
brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql
在 El Capitan 中,我使用了与@Forbze 相同的解决方案,但多了 2 个命令如下。
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.3/lib/libpq.5.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
完美运行!
我能够通过使用 psycopg2-binary 而不是 psycopg2 在我的 Mac(运行 Catalina,10.15.3)上解决这个问题。
pip3 uninstall psycopg2
pip3 install psycopg2-binary