Python и Pexpect - Pxssh установлен, но не доступен - PullRequest
0 голосов
/ 21 сентября 2018

У меня та же проблема, что и у этого плаката: Невозможно импортировать pxssh из 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 недоступен.Я не могу понять, почему.

При поиске в моей системе я вижу файл "pxssh.py" в каталоге pexpect:

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.Пы в правильном месте.И все же, код не знает, как использовать pxssh.

Я должен также сказать, что pxssh имеет никогда , работавших на этой машине.Есть ли что-то, что я должен сделать, чтобы выкинуть pxssh после установки pexpect?

Может ли это быть проблемой совместимости версий между Python 2.7.5 и pexpect 4.6.0?Я отмечаю, что в моем пути установки pexpect есть ссылка на Python 3.6 ...

ADDENDUM:

Я также отмечаю, что когда я изменяю код на этот:

#!/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 не установлен ???Действительно смущен ...

1 Ответ

0 голосов
/ 22 мая 2019
import pxssh

s = pxssh.pxssh()

Приведенный выше фрагмент кода должен работать, попробуйте импортировать только модуль pxssh.

...