Python和Pexpect--Pxssh已安装但不可用

Python和Pexpect--Pxssh已安装但不可用,python,pexpect,pxssh,Python,Pexpect,Pxssh,我和这张海报有同样的问题: 然而,上述海报的解决方案并不适用于我 问题是。。。我是一个编写Python脚本(Python 2.7.5)的Python新手,并且已经安装了pexpect 4.6.0。我可以在代码中导入并使用pexpect。但是,我需要使用pxssh,这是行不通的。下面是我的代码: Linux $ ./myCode.py Traceback (most recent call last): File "./myCode.py", line 4, in <module>

我和这张海报有同样的问题:

然而,上述海报的解决方案并不适用于我

问题是。。。我是一个编写Python脚本(Python 2.7.5)的Python新手,并且已经安装了pexpect 4.6.0。我可以在代码中导入并使用pexpect。但是,我需要使用pxssh,这是行不通的。下面是我的代码:

Linux $ ./myCode.py
Traceback (most recent call last):
  File "./myCode.py", line 4, in <module>
    from pexpect import pxssh
ImportError: cannot import name pxssh
Linux $
因此,我相信我正确地包含了pxssh库,并且在代码中正确地调用了该类。问题是,尽管我的系统上安装了pexpect,但pxssh不可用。我不明白为什么

当我搜索我的系统时,我在pexpect目录中看到一个“pxsh.py”文件:

Linux $ pwd
/home/me/project1/lib/python3.6/site-packages/pexpect-4.6.0-py3.6.egg/pexpect
Linux $
Linux $ ls -l
total 200
-rw-r--r--. 1 ph9821 domain users 12177 Sep 21 15:58 ANSI.py
-rw-r--r--. 1 ph9821 domain users  2685 Sep 21 15:58 _async.py
-rw-rw-r--. 1 ph9821 domain users   380 Sep 21 15:58 bashrc.sh
-rw-r--r--. 1 ph9821 domain users  1068 Sep 21 15:58 exceptions.py
-rw-r--r--. 1 ph9821 domain users 11035 Sep 21 15:58 expect.py
-rw-r--r--. 1 ph9821 domain users  5828 Sep 21 15:58 fdpexpect.py
-rw-r--r--. 1 ph9821 domain users 13419 Sep 21 15:58 FSM.py
-rw-r--r--. 1 ph9821 domain users  3902 Sep 21 15:58 __init__.py
-rw-r--r--. 1 ph9821 domain users  6161 Sep 21 15:58 popen_spawn.py
-rw-r--r--. 1 ph9821 domain users 35855 Sep 21 15:58 pty_spawn.py
-rw-r--r--. 1 ph9821 domain users 22589 Sep 21 15:58 pxssh.py        <<<====
drwxr-xr-x. 2 ph9821 domain users  4096 Sep 21 15:58 __pycache__
-rw-r--r--. 1 ph9821 domain users  5170 Sep 21 15:58 replwrap.py
-rw-r--r--. 1 ph9821 domain users  6632 Sep 21 15:58 run.py
-rw-r--r--. 1 ph9821 domain users 13716 Sep 21 15:58 screen.py
-rw-r--r--. 1 ph9821 domain users 21067 Sep 21 15:58 spawnbase.py
-rw-r--r--. 1 ph9821 domain users  6019 Sep 21 15:58 utils.py

Linux $
所以。。。我使用的是兼容的Python版本,安装了最新的pexpect并正常工作,pxsh.py放在了正确的位置。然而,代码不知道如何使用pxssh

我还应该说pxssh从未在这台机器上工作过。在安装了pexpect之后,我是否需要做些什么来启动pxssh

这可能是Python 2.7.5和pexpect 4.6.0之间的版本兼容性问题吗?我注意到在我的pexpect安装路径中有一个对Python 3.6的引用

增编:

我还注意到,当我将代码更改为:

#!/usr/bin/python

import sys, time, datetime, logging, pexpect
from pexpect import *
...
s = pexpect.pxssh()
s = pexpect.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
...
错误消息更改为:

Linux $ ./myCode
Traceback (most recent call last):
  File "./myCode.py", line 188, in <module>
    s = pexpect.pxssh()
AttributeError: 'module' object has no attribute 'pxssh'
Linux $
Linux$。/myCode
回溯(最近一次呼叫最后一次):
文件“/myCode.py”,第188行,在
s=pexpect.pxsh()
AttributeError:“模块”对象没有属性“pxssh”
Linux$
因此,代码可以使用pexpect,但不能使用pxsh。这意味着没有安装pxssh???真的很困惑

import pxssh

s = pxssh.pxssh()

上面的代码片段应该可以工作,请尝试只导入pxssh模块。

您似乎混合了python 2和3。尝试使用
easy\u install-2.7
而不是
easy\u install
来强制使用您想要的python版本。@meh是的,我开始认为您是正确的。不幸的是,easy_install-2.7没有帮助。但如果你是对的,理论上我应该能够升级到Python3,或者卸载所有python并在ver3上开始一个干净的安装。你同意吗?非常感谢:)我没有使用过
easy\u install
,所以我不确定它是如何管理事情的,但它应该允许您同时拥有多个版本的python,我认为这不是一个问题。您需要使用
#启动脚本/usr/bin/python2
#/usr/bin/python3
如果您确实想确保脚本将以哪个版本的python运行/usr/bin/python可能是2,也可能是3,这取决于您的系统。另外,这是使用pxsh的典型方式:
从python导入pxsh;s=pxsh.pxsh();如果s.login(…)
Linux $ ./myCode
Traceback (most recent call last):
  File "./myCode.py", line 188, in <module>
    s = pexpect.pxssh()
AttributeError: 'module' object has no attribute 'pxssh'
Linux $
import pxssh

s = pxssh.pxssh()