2011-12-13 13 views
13

Chciałbym dodać kilka opcji wiersza poleceń do kodu uruchamiania Pythona, aby faktycznie wywołać powłokę ipython. Jak mogę to zrobić?Jak mogę uruchomić ipython z powłoki, uruchamiając "python ..."?

+10

Czy możesz wyjaśnić swój * prawdziwy * problem? Chodzi mi o to, jaki faktyczny problem ma rozwiązać ten hack? –

+0

Używam IDE, który ma ograniczone wsparcie dla interaktywnej powłoki, aby uruchomić twoje skrypty w (pycharm), i chciałbym móc uruchomić skrypty w bardziej interaktywny sposób, na przykład w IEP. – Shwouchk

+0

Ta poprawka powinna działać również w środowisku Windows. – Shwouchk

Odpowiedz

21

Aby rozpocząć ipython powłokę bezpośrednio w Pythonie:

from IPython import embed 

a = "I will be accessible in IPython shell!" 

embed() 

Albo, po prostu go uruchomić z linii poleceń:

$ python -c "from IPython import embed; embed()" 

embed użyje wszystkich zmiennych lokalnych wewnątrz powłoki.

Jeśli chcesz, aby zapewnić niestandardowe mieszkańców (zmienne dostępne w skorupkach) przyjrzeć IPython.terminal.embed.InteractiveShellEmbed

+0

Nie używam już tego środowiska lub systemu operacyjnego, ale myślę, że zadziałałoby. Dzięki! – Shwouchk

2

Nie jest do końca jasne, co masz na myśli przez "kod uruchamiania Pythona"; Zakładam, że odnosi się to do kodu powłoki używanego do uruchamiania Pythona.

Na Unix, można użyć alias zastąpić jedną komendę do drugiego:

[email protected]:~$ alias python=ipython 
[email protected]:~$ python 
Enthought Python Distribution -- http://www.enthought.com 

Python 2.7.1 |EPD 7.0-2 (64-bit)| (r271:86832, Nov 29 2010, 13:51:37) 
Type "copyright", "credits" or "license" for more information. 

IPython 0.10.1 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object'. ?object also works, ?? prints more. 

In [1]: 

Jeśli nie jest to, co chcesz, proszę wyjaśnić swoje pytanie.

+0

Dzięki, ale muszę to działa na windows ... – Shwouchk

6

Aby to zrobić dokładnie to, co prosiłeś, tzn dodać opcje wiersza poleceń do python inwokacji rzeczywiście wywołać ipython, można to zrobić:

python -c 'import subprocess; subprocess.call("ipython")' 

Nie mogę sobie wyobrazić, choć wszelkie okoliczności, w których to byłoby przydatne.

+0

Popraw mnie, jeśli jestem w błędzie, ale w ten sposób wszelkie polecenia minęło i plik skryptu będzie nadal działa w python, a nie w ipython, prawda? – Shwouchk

+0

@Shwouchk: Twoje pierwotne pytanie dostarczyło bardzo mało informacji - ta odpowiedź była najlepszą możliwą do odgadnięcia. Od komentarzy do twojego pierwotnego pytania, myślę, że to rozwiązanie ci nie pomoże, ale co powiesz na próbę? –

+0

Naprawiono błąd, który powodował, że uruchamiałem ipython z monitu emacs, którego nie mogłem w inny sposób poprawnie przepłukać danych wyjściowych do bufora emacs. – flatline

1

Chyba masz na myśli coś takiego python C:\Python27\Scripts\ipython-script.py

2

Może rozwiązaniem jest po prostu osadzić ipython w kodzie jak tego

def some_function(): 
    some code 

    import Ipython 
    Ipython.embed() 

Po uruchomieniu funkcja w jakimś kodzie uruchomi się i terminal, którego zasięg jest tą funkcją, z której został wywołany.

Powiązane problemy