Aarch64安装使用psycopg2

官方推荐安装psycopg2时候使用psycopg2-binray2.8.6 模块进行安装

测试环境:aarch64 + contos7.8 + python3.8 + psycopg2-binray2.8.6 

1、安装python,我已安装,安装教程参考:Centos7 编码编译python3.8

2、安装所需要的依赖模块

yum install -y postgresql postgresql-devel python3-devel

3、安装

[root@ecs-arm-wangdapeng python381]# ./bin/pip3 install psycopg2-binary

记录下通过mv修改wheel文件重命名的方式,但是这种方式不可行。

由于aarch64在下载psycopg2-binray2.8.6 模块时候没有libs依赖包,x86是有libs包的,所以手动去安装。

模块下载地址:https://pypi.org/project/psycopg2-binary/#files   ----- psycopg2_binary-2.8.6-cp38-cp38-manylinux1_x86_64.whl 

manylinux1_x86_64:下载会生成psycopg2_binary.libs文件夹

win_amd64.whl :libs文件夹会在psycopg2里面,.so会上个少。区别是libs存储位置和操作系统,我建议还是使用manylinux1

所以aarch64(非官方存在的whl)安装一点也不酷。

测试过程:

在x86平台,安装了python,配置环境变量,pip install psycopg2-binary后

[root@baidu1 python381]# ldd lib/python3.8/site-packages/psycopg2/_psycopg.cpython-38-x86_64-linux-gnu.so 
        linux-vdso.so.1 =>  (0x00007ffc9d7fe000)
        libpq-0929ced5.so.5.11 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libpq-0929ced5.so.5.11 (0x00007f7cdbd52000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7cdbb36000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f7cdb768000)
        libssl-dbe77c63.so.1.1.1g => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libssl-dbe77c63.so.1.1.1g (0x00007f7cdb4c6000)
        libcrypto-e62d380e.so.1.1.1g => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libcrypto-e62d380e.so.1.1.1g (0x00007f7cdafaa000)
        libgssapi_krb5-174f8956.so.2.2 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libgssapi_krb5-174f8956.so.2.2 (0x00007f7cdad6f000)
        libldap_r-2-9bd554ba.4.so.2.10.13 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libldap_r-2-9bd554ba.4.so.2.10.13 (0x00007f7cdab04000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f7cdc1ec000)
        libz-a147dcb0.so.1.2.3 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libz-a147dcb0.so.1.2.3 (0x00007f7cda8ef000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f7cda6eb000)
        libkrb5-fb0d2caa.so.3.3 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libkrb5-fb0d2caa.so.3.3 (0x00007f7cda437000)
        libk5crypto-622ef25b.so.3.1 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libk5crypto-622ef25b.so.3.1 (0x00007f7cda20e000)
        libcom_err-beb60336.so.2.1 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libcom_err-beb60336.so.2.1 (0x00007f7cda00b000)
        libkrb5support-d7ce89d4.so.0.1 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libkrb5support-d7ce89d4.so.0.1 (0x00007f7cd9e00000)
        libkeyutils-1-ff31573b.2.so => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libkeyutils-1-ff31573b.2.so (0x00007f7cd9bfd000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f7cd99e3000)
        liblber-2-d5725c47.4.so.2.10.13 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/liblber-2-d5725c47.4.so.2.10.13 (0x00007f7cd97d4000)
        libsasl2-6f25e95f.so.3.0.0 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libsasl2-6f25e95f.so.3.0.0 (0x00007f7cd95b2000)
        libselinux-cf8f9094.so.1 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libselinux-cf8f9094.so.1 (0x00007f7cd9396000)
        libsepol-b4f5b513.so.1 => /usr/local/python381/lib/python3.8/site-packages/psycopg2/../psycopg2_binary.libs/libsepol-b4f5b513.so.1 (0x00007f7cd914e000)
[root@baidu1 python381]# ldd lib/python3.8/site-packages/psycopg2
[root@baidu1 python381]# ./bin/python3 
Python 3.8.1 (default, Dec 16 2020, 15:29:31) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2

这个机器并没有安装pg和ptyhon3-devel等模块包,但是依然可以正常使用,说明psycopg2内置了这些.so依赖包。

但是,在aarch64却不是这样,如果你不去yum install postgresql postgresql-devel python3-devel,他就会报错。

[root@ecs-arm-wangdapeng python381]# ./bin/pip3 install psycopg2-binary
Collecting psycopg2-binary
  Using cached https://files.pythonhosted.org/packages/fc/51/0f2c6aec5c59e5640f507b59567f63b9d73a9317898810b4db311da32dfc/psycopg2-binary-2.8.6.tar.gz
    ERROR: Command errored out with exit status 1:
     command: /opt/python381/bin/python3.8 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ndhc4kg3/psycopg2-binary/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ndhc4kg3/psycopg2-binary/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
         cwd: /tmp/pip-install-ndhc4kg3/psycopg2-binary/
    Complete output (23 lines):
    running egg_info
    creating pip-egg-info/psycopg2_binary.egg-info
    writing pip-egg-info/psycopg2_binary.egg-info/PKG-INFO
    writing dependency_links to pip-egg-info/psycopg2_binary.egg-info/dependency_links.txt
    writing top-level names to pip-egg-info/psycopg2_binary.egg-info/top_level.txt
    writing manifest file 'pip-egg-info/psycopg2_binary.egg-info/SOURCES.txt'
    
    Error: pg_config executable not found.

官方给的解释是,目前为止,aarch64的wheel还正在进行,并未部署。

#这是yum install postgresql postgresql-devel python3-devel后
[root@ecs-arm-wangdapeng python381]# ./bin/pip3 install psycopg2-binary
Collecting psycopg2-binary
  Using cached https://files.pythonhosted.org/packages/fc/51/0f2c6aec5c59e5640f507b59567f63b9d73a9317898810b4db311da32dfc/psycopg2-binary-2.8.6.tar.gz
Installing collected packages: psycopg2-binary
  Running setup.py install for psycopg2-binary ... done
Successfully installed psycopg2-binary-2.8.6
WARNING: You are using pip version 19.2.3, however version 20.3.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[root@ecs-arm-wangdapeng python381]# 
[root@ecs-arm-wangdapeng psycopg2]# ldd _psycopg.cpython-38-aarch64-linux-gnu.so 
        linux-vdso.so.1 (0x0000ffff8c6d0000)
        libpq.so.5 => /usr/lib64/libpq.so.5 (0x0000ffff8c5f0000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x0000ffff8c5b0000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x0000ffff8c430000)
        libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x0000ffff8c380000)
        libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x0000ffff8c0c0000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000ffff8c050000)
        libldap_r-2.4.so.2 => /usr/lib64/libldap_r-2.4.so.2 (0x0000ffff8bfd0000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffff8c6e0000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x0000ffff8bf90000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x0000ffff8bf60000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000ffff8be50000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000ffff8be10000)
        libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x0000ffff8bde0000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x0000ffff8bdb0000)
        libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x0000ffff8bd80000)
        libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x0000ffff8bd40000)
        liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x0000ffff8bd10000)
        libsasl2.so.3 => /usr/lib64/libsasl2.so.3 (0x0000ffff8bcd0000)
        libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x0000ffff8bc80000)
        libcrypt.so.1 => /usr/lib64/libcrypt.so.1 (0x0000ffff8bc40000)
        libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x0000ffff8bba0000)

Using cached 下载地址与py资源库地址完全吻合https://pypi.org/project/psycopg2-binary/#files,说明他是通过的源码编译的方式。

总结:如果在aarch64上想使用离线版的psycopg2-binary.so,那么需要把这些依赖全部拷贝过去,需要小心的是,每个机器的依赖模块的名称会不同

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值