MacOS 使用ssh2-python报错ImportError: dlopen ... _libssh2_channel_direct_tcpip_ex

环境

  • Apple M3 Pro
  • MacOS 14.1
  • Python 3.9
  • parallel-ssh==2.14.0
  • ssh2-python==1.1.2.post1

报错信息

复制代码
  File "./manager.py", line 16, in <module>
    from pssh.clients import ParallelSSHClient
  File ".env/lib/python3.9/site-packages/pssh/clients/__init__.py", line 19, in <module>
    from .native import ParallelSSHClient, SSHClient
  File ".env/lib/python3.9/site-packages/pssh/clients/native/__init__.py", line 19, in <module>
    from .parallel import ParallelSSHClient
  File ".env/lib/python3.9/site-packages/pssh/clients/native/parallel.py", line 20, in <module>
    from .single import SSHClient
  File ".env/lib/python3.9/site-packages/pssh/clients/native/single.py", line 30, in <module>
    from ssh2.session import Session, LIBSSH2_SESSION_BLOCK_INBOUND, LIBSSH2_SESSION_BLOCK_OUTBOUND
ImportError: dlopen(.env/lib/python3.9/site-packages/ssh2/session.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_libssh2_channel_direct_tcpip_ex'

解决方式

复制代码
alias ibrew='arch -x86_64 /usr/local/bin/brew' # X86 Homebrew
ibrew install libssh2   # 本次安装的最新版本 stable 1.11.0
export LIBSSH2_DIR=$(ibrew --prefix libssh2)
export LDFLAGS="-L$LIBSSH2_DIR/lib"
export CFLAGS="-I$LIBSSH2_DIR/include"

pip uninstall -y pssh ssh2-python
pip install parallel-ssh==2.14.0 ssh2-python==1.1.2.post1 --no-cache-dir

安装完依赖的lib后,服务正常运行。

复制代码
otool -L .env/lib/python3.9/site-packages/ssh2/session.cpython-39-darwin.so

.env/lib/python3.9/site-packages/ssh2/session.cpython-39-darwin.so:
	/usr/local/opt/libssh2/lib/libssh2.1.dylib (compatibility version 2.0.0, current version 2.1.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)

或者

复制代码
python -c "from ssh2.session import Session; print('Success')"
相关推荐
合作小小程序员小小店14 小时前
web网页开发,在线%聚类,微博,舆情%系统,基于python,pycharm,django,nlp,kmeans,mysql
python·pycharm·kmeans·聚类·sklearn·kmean
Dan.Qiao14 小时前
python读文件readline和readlines区别和惰性读
开发语言·python·惰性读文件
闲人编程14 小时前
将你的旧手机变成监控摄像头(Python + OpenCV)
python·opencv·智能手机·监控·codecapsule·oasis
007php00714 小时前
大厂深度面试相关文章:深入探讨底层原理与高性能优化
java·开发语言·git·python·面试·职场和发展·性能优化
SunnyDays101114 小时前
Python 复制和移动 Excel 工作表并保留所有格式:详解
python·复制excel工作表·移动excel工作表·重新排列excel工作表
嚴寒14 小时前
我在 Mac 用一行脚本征服了 5TB NTFS:拒绝付费,彻底搞定免费方案
macos·mac
不会编程的小寒15 小时前
C++初始继承,继承中构造、析构顺序
开发语言·python
Mos_x15 小时前
关于我们的python日记本
开发语言·python
十重幻想16 小时前
reshape的共享内存
python
Juchecar16 小时前
设计模式不是Java专属,其他语言的使用方法
java·python·设计模式