試した環境
本題
Python で SSH 接続してインタラクティブにコマンド実行したくて Pexpect の pxssh を使おうとしたところ以下のエラーが出ました。
import pexpect
呼び出す方法では以下のエラーが出ます。
>>> import pexpect >>> ssh = pexpect.pxssh.pxssh() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'pexpect' has no attribute 'pxssh'
from pexpect import pxssh
で呼び出す方法では以下のエラーが出ます。
>>> from pexpect import pxssh Traceback (most recent call last): File "<stdin>", line 1, in <module> File "E:\work\.venv\lib\site-packages\pexpect\pxssh.py", line 23, in <module> from pexpect import ExceptionPexpect, TIMEOUT, EOF, spawn ImportError: cannot import name 'spawn' from 'pexpect' (E:\work\.venv\lib\site-packages\pexpect\__init__.py)
pxssh.py
の23行目で spawn を import しようとしてます。
from pexpect import ExceptionPexpect, TIMEOUT, EOF, spawn
__init__.py
を読むと、Windows ではpty_spawn.py
の spawn を import しないことになっており、結果 pxssh が利用できないようです。
if sys.platform != 'win32': # On Unix, these are available at the top level for backwards compatibility from .pty_spawn import spawn, spawnu from .run import run, runu