Import Python-Modul von Bash
Ich bin starten eines Python-Skript von der Kommandozeile (Bash) unter Linux. Ich muss offen Python ein Modul importieren, und dann haben code-Zeilen interpretiert. Die Konsole muss dann bleiben in Python (nicht beenden). Wie mache ich das?
Habe ich versucht einen alias wie diese:
alias program="cd /home/myname/programs/; python; import module; line_of_code"
Aber diese beginnt erst, python und die Befehle werden nicht ausgeführt (kein Modul importieren, keine Zeile code behandelt).
Was ist der richtige Weg, dies zu tun, vorausgesetzt, ich brauche, um Python zu öffnen (nicht beenden), nachdem das Skript ausgeführt wird?
Vielen Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen einfachen Weg, dies zu tun ist mit dem "code" - Modul:
Dieser bringt Sie in eine interaktive shell, wenn der code.Interaktion() aufgerufen wird. Die
local
keyword argument zuinteract
wird verwendet, um die Vorveröffentlichung der Standard-namespace für den interpreter an, der angelegt wird; wir verwendenlocals()
, die eine vordefinierte Funktion gibt den lokalen namespace als ein Wörterbuch.Ihren Befehl würde wie folgt Aussehen:
lässt Sie in eine Dolmetscherin, die hat die richtige Umgebung.
python -c "import mymodule, code; code.interact(local=locals()); print('ciao')"
würde nicht funktionieren..code.interact(...)
sind, sind Sie in der interaktiven Sitzung. Wenn Sie wollen, um code auszuführen, bevor Sie in Ihre interaktive Sitzung, haben Sie, um Sie vor dem Aufrufcode.interact(...)
. Wenn Sie wollen, um code auszuführen, nachdem Sie die interaktive Sitzung beendet ist, aber bevor der interpreter beendet wird, können Sie beenden Sie den interpreter mitCTRL-d
auf Linux, oderCTRL-z + Enter
auf Windows, und Sie sollten sehen, Ihren 'ciao' - Meldung auf dem terminal.verwenden Sie ein Unterprogramm anstelle von alias
.bash_bashrc
ist, kann man ihn dort. wenn Sie möchten, verwenden Sie das Unterprogramm, nur einsource .bash_bashrc
-i
und-c
, das löst den OP ' s problem. Während Sie etwas in einer Funktion, die nie weh tut (für zusätzliche Flexibilität), ein alias würde genauso gut arbeiten hier. Ein Hinweis auf die Bash-Terminologie: 'Unterprogramm' ist verwendet als Oberbegriff für die beiden shell-Funktionen und bezogen scripts; daher ist es besser, das als eine [shell] - Funktion.Beispiel:
-i
Flagge.