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')"
相关推荐
17715574312 分钟前
Mac 上 Ruby、gem、rvm、CocoaPods 四者关系通俗讲清楚
macos·ruby·cocoapods
倒流时光三十年10 分钟前
第一阶段 05 · Java 客户端查询类详解(Query / SearchCriteria / Response 与复杂拼接)
java·开发语言·python
Shell运维手记21 分钟前
交换机(二层交换机)完整工作原理
运维·网络·网络协议·macos·交换机
CTA终结者23 分钟前
近期AI量化学习,把规则改写接到策略开发
人工智能·python
有Li25 分钟前
使用整合电子健康记录的大语言模型智能体实现前列腺癌患者教育个性化文献速递/医学智能体前沿
人工智能·python·机器学习·语言模型·医学生
米码收割机44 分钟前
【Python】Flask+SQLite_web 宠物领养系统 (源码+文档)【独一无二】
前端·python·flask
寒水馨1 小时前
macOS下载、安装 Tailwind CSS-v4.3.3(附安装包tailwindcss-macos-arm64)
前端·css·macos·tailwind css·utility-first·css 框架·实用优先
卷无止境1 小时前
python进阶:类方法与静态方法的分野,classmethod 和 staticmethod 到底该怎么选
后端·python
卷无止境1 小时前
继承与多态:Python OOP里最容易被用错的两把梯子
后端·python