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 ..."?
Odpowiedz
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
Nie używam już tego środowiska lub systemu operacyjnego, ale myślę, że zadziałałoby. Dzięki! – Shwouchk
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.
Dzięki, ale muszę to działa na windows ... – Shwouchk
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.
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
@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ę? –
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
Chyba masz na myśli coś takiego python C:\Python27\Scripts\ipython-script.py
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.
Czy możesz wyjaśnić swój * prawdziwy * problem? Chodzi mi o to, jaki faktyczny problem ma rozwiązać ten hack? –
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
Ta poprawka powinna działać również w środowisku Windows. – Shwouchk