我有与此海报相同的问题:Can't import pxssh from pexpect
但是,适用于上述海报的解决方案不适用于我。
这是问题所在...我是一名Python新手,正在编写Python脚本(Python 2.7.5)并安装了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 $
代码是这样的:
#!/usr/bin/python
import sys, time, datetime, logging
from pexpect import pxssh
...
s = pxssh.pxssh()
s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
...more stuff...
所以我相信我正确地包含了pxssh库,并且在我的代码中正确地调用了该类。问题是,尽管我的系统上安装了pexpect,但是pxssh不可用。我不知道为什么。
搜索系统时,我在pexpect目录中看到一个“ pxssh.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 $
在另一篇文章中,他们建议检查我是否需要升级,但这没有帮助:
Linux $ easy_install --upgrade pexpect
Searching for pexpect
Reading https://pypi.python.org/simple/pexpect/
Best match: pexpect 4.6.0
Processing pexpect-4.6.0-py3.6.egg
pexpect 4.6.0 is already the active version in easy-install.pth
Using /home/me/project1/lib/python3.6/site-packages/pexpect-4.6.0-py3.6.egg
Processing dependencies for pexpect
Finished processing dependencies for pexpect
Linux $
所以...我使用的是兼容版本的Python,已安装并正在运行最新的pexpect,并且pxssh.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 $
因此代码可以使用pexpect,但不能使用pxssh。这意味着未安装pxssh ???真的很困惑...
答案 0 :(得分:1)
import pxssh
s = pxssh.pxssh()
上面的代码段应该起作用,尝试仅导入pxssh模块。