Как я могу изменить лимит времени ожидания импорта (python2 .7 и oct2py) - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь импортировать октаву, но время ожидания истекло; не всегда, но большую часть времени. Есть ли решение? Как я могу изменить лимит времени ожидания команды импорта? В моем сценарии у меня есть только следующая строка:

from oct2py import octave

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from oct2py import octave
  File "/usr/local/lib/python2.7/site-packages/oct2py/__init__.py", line 38, in <module>
    octave = Oct2Py()
  File "/usr/local/lib/python2.7/site-packages/oct2py/core.py", line 76, in __init__
    self.restart()
  File "/usr/local/lib/python2.7/site-packages/oct2py/core.py", line 518, in restart
    logger=self.logger)
  File "/usr/local/lib/python2.7/site-packages/octave_kernel/kernel.py", line 173, in __init__
    self.repl = self._create_repl()
  File "/usr/local/lib/python2.7/site-packages/octave_kernel/kernel.py", line 391, in _create_repl
    force_prompt_on_continuation=True)
  File "/usr/local/lib/python2.7/site-packages/metakernel/replwrap.py", line 97, in __init__
    continuation_prompt_regex))
  File "/usr/local/lib/python2.7/site-packages/metakernel/replwrap.py", line 119, in set_prompt
    self.child.expect(prompt_regex)
  File "/usr/local/lib/python2.7/site-packages/pexpect/spawnbase.py", line 341, in expect
    timeout, searchwindowsize, async_)
  File "/usr/local/lib/python2.7/site-packages/pexpect/spawnbase.py", line 369, in expect_list
    return exp.expect_loop(timeout)
  File "/usr/local/lib/python2.7/site-packages/pexpect/expect.py", line 119, in expect_loop
    return self.timeout(e)
  File "/usr/local/lib/python2.7/site-packages/pexpect/expect.py", line 82, in timeout
    raise TIMEOUT(msg)
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7fbe43d8f910>
command: /usr/bin/octave-cli
args: ['/usr/bin/octave-cli', '--interactive', '--quiet', '--no-init-file']
buffer (last 100 chars): u''

after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 2507
child_fd: 6
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile(u'octave.*>')

1 Ответ

0 голосов
/ 06 апреля 2020

Как упоминалось в OP, это исключение из oct2py, MonkeyPatching будет одним из способов решения этой проблемы.

Чтобы попробовать это исправление, вы можете go добавить следующую строку кода и добавить timeout=None в качестве параметра

В локальной файловой системе /usr/local/lib/python2.7/site-packages/metakernel/replwrap.py Строка 119.

Ссылка на Github для того же источника здесь.

Похоже, вы используете pexpect, который вызывает Timeout.

В соответствии с документацией формы pexpect, вы можете контролировать время ожидания -

child.expect(pexpect.EOF, timeout=None)
...