Есть ли способ перезапустить или сбросить интерпретатор python в doctest python?

Я пишу короткий учебник и хотел бы иметь возможность запускать в нем примеры, используя doctest python, используя

python -m doctest foo.txt

В учебнике есть момент, когда я хочу начать использовать новый, чистый интерпретатор Python. Есть ли механизм для этого?


person EHN    schedule 11.05.2011    source источник


Ответы (1)


Если все, что вам нужно, это запустить новый интерпретатор Python внутри интерпретатора Python, вы можете просто ввести команду: os.system('python')

Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> import os
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'os']
>>> os.system('python')
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> quit()
0
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'os']
>>>

однако, если вы хотите перезапустить или сбросить интерпретатор Python, а не запускать новый интерпретатор Python, как указано выше, вы можете посмотреть это решение. Я не исследовал это, но должен помочь вам начать работу.

Тихий перезапуск интерпретатора Python

person Vijay    schedule 13.05.2011
comment
Умно, но это не работает из doctest: когда дочерний процесс запускается, он ожидает ввода со стандартного ввода. Мне нужно изучить, как doctest обрабатывает stdin и stdout, чтобы увидеть, может ли работать связанное решение с popen... - person EHN; 13.05.2011
comment
Упомянутый Перезапуск интерпретатора Python Quietly appreach с использованием рецепта сохранения состояния на самом деле не сбрасывает состояние, например, он не отменяет определения каких-либо интерактивно определенных функций. - person EHN; 13.05.2011