whoknows_why 2023-05-01 21:38 采纳率: 100%
浏览 39
已结题

Python3.11在import paramiko时报undefined symbol: OPENSSL_sk_num错误

    Python3.11下使用源码包安装有cryptography3.3.2和paramiko3.1.0(也尝试过降版本到paramiko 2.7.1和cryptography2.9.2的组合)
    在import paramiko时报错,报错信息如下:
>>> import paramiko
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pythonuser/src/paramiko-2.7.1/paramiko/__init__.py", line 22, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "/home/pythonuser/src/paramiko-2.7.1/paramiko/transport.py", line 129, in <module>
    class Transport(threading.Thread, ClosingContextManager):
  File "/home/pythonuser/src/paramiko-2.7.1/paramiko/transport.py", line 190, in Transport
    if KexCurve25519.is_available():
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pythonuser/src/paramiko-2.7.1/paramiko/kex_curve25519.py", line 30, in is_available
    X25519PrivateKey.generate()
  File "/home/pythonuser/venv02/lib/python3.11/site-packages/cryptography-2.9.2-py3.11-linux-x86_64.egg/cryptography/hazmat/primitives/asymmetric/x25519.py", line 38, in generate
    from cryptography.hazmat.backends.openssl.backend import backend
  File "/home/pythonuser/venv02/lib/python3.11/site-packages/cryptography-2.9.2-py3.11-linux-x86_64.egg/cryptography/hazmat/backends/openssl/__init__.py", line 7, in <module>
    from cryptography.hazmat.backends.openssl.backend import backend
  File "/home/pythonuser/venv02/lib/python3.11/site-packages/cryptography-2.9.2-py3.11-linux-x86_64.egg/cryptography/hazmat/backends/openssl/backend.py", line 75, in <module>
    from cryptography.hazmat.bindings.openssl import binding
  File "/home/pythonuser/venv02/lib/python3.11/site-packages/cryptography-2.9.2-py3.11-linux-x86_64.egg/cryptography/hazmat/bindings/openssl/binding.py", line 16, in <module>
    from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: /home/pythonuser/venv02/lib/python3.11/site-packages/cryptography-2.9.2-py3.11-linux-x86_64.egg/cryptography/hazmat/bindings/_openssl.abi3.so: undefined symbol: OPENSSL_sk_num
    但如果改用whl安装cryptography的话,import paramiko就正常。

    操作系统:CentOS7,独立目录安装有OpenSSL版本1.1.1t,
    OpenSSL安装环境配置为:
    ../config --prefix=/usr/local/openssl shared zlib threads enable-camellia
    安装后已为相关的bin、include、lib64里的libssl.so.1.1和libcrypto.so.1.1建立了软链接
    也更新了动态链接库
    /usr/local/openssl/lib:
        libssl.so.1.1 -> libssl.so.1.1
        libcrypto.so.1.1 -> libcrypto.so.1.1
    Python全程在激活虚拟环境下操作,也试过不使用虚拟环境,问题一样。
    此外,试过使用系统自带的openssl-1.0.2k和独立安装的openssl-0.9.8e来重新编译Python,结果都一样。
请教老师们,这个可能是什么原因造成的,如何解决?非常感谢!
  • 写回答

4条回答 默认 最新

  • callinglove 2023-05-03 21:04
    关注

    做一波排查吧

    1. 安装的方式下,能否查看相关的动态库连接系统下的openssl库,能否查看使用了哪个版本的openssl
    2. cryptography与openssl版本问题?要么更改前者的版本,要么更改后者的版本,查看下前者对后者的版本要求吧
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 修改了问题 5月3日
  • 赞助了问题酬金15元 5月3日
  • 展开全部