2017-02-12 21 views
1

В python_test.py файле, я вставил:Проблемы с IPython

def my_contains(elem, lst): 
    return elem in lst 
def my_first(lst): 
    return lst[0] 

import IPython 
IPython.embed() 

После исполнив python3 python_test.py, я получил:

Traceback (most recent call last): 
    File "python_test.py", line 6, in <module> 
    import IPython 
ImportError: No module named 'IPython' 

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

+0

Возможно, вам необходимо установить его с помощью 'pip install ipython'. –

+0

@WillemVanOnsem Кажется, он все еще не работает после установки 'IPython'. –

+0

- это python 3 или python 2. Возможно, вам нужно использовать 'pip3'. –

ответ

0

От человека странице:

-i Когда скрипт передается в качестве первого аргумента или используется опция -c, введите в интерактивный режим после выполнения сценария или команды. Он не читает файл $ PYTHONSTARTUP. Это может быть полезно для проверки глобальных переменных или трассировки стека, когда сценарий вызывает исключение.

Я тестировал свой код следующим образом, и он работал на меня:

python3 -i python_test.py 
>>> my_first([3, 2, 1]) 
3 
>>> my_contains(2, [1, 10, 100]) 
False 
>>> my_contains(1, [2, 1, 3]) 
True 

Этот ответ копируется почти дословно из https://stackoverflow.com/a/5280210/7554621

Что касается IPython, кажется, что он не может найти модуль, означает, что он не был установлен, установлен неверно, не знает, где его найти, неправильное имя или неправильное использование. Я заглянул в его установку здесь http://ipython.readthedocs.io/en/stable/install/index.html.

После его установки, я просто использовал IPython вместо Python3, чтобы загрузить файл и введите интерактивную оболочку:

@WillemVanOnsem сделал хорошую точку в комментариях выше, что PIP3 может потребоваться использовать вместо пипа , Для меня, pip работал отлично и установлен правильно.

pip install ipython 
ipython -i python_test.py 
Python 3.5.1 (default, Apr 18 2016, 11:46:32) 

In [1]: my_contains(1, [1, 2, 3]) 
Out[1]: True 

In [2]: my_first([1, 2, 3]) 
Out[2]: 1