Импорт модуля Python из Bash - PullRequest
10 голосов
/ 08 марта 2010

Я запускаю скрипт Python из командной строки (Bash) под Linux. Мне нужно открыть Python, импортировать модуль, а затем интерпретировать строки кода. Консоль должна оставаться в Python (не выходить из нее). Как мне это сделать?

Я пробовал псевдоним, подобный этому:

alias program="cd /home/myname/programs/; python; import module; line_of_code"

Но это только запускает python, а команды не выполняются (нет импорта модуля, нет обработанной строки кода).

Каков правильный способ сделать это, при условии, что мне нужно держать Python открытым (не выходить из него) после выполнения скрипта? Большое спасибо!

Ответы [ 3 ]

8 голосов
/ 08 марта 2010

использовать подпрограмму вместо псевдонима

callmyprogram(){
  python -i -c "import time;print time.localtime()"
}
callmyprogram
6 голосов
/ 08 марта 2010

Простой способ сделать это с помощью модуля «код»:

python -c "import code; code.interact(local=locals())"

Это приведет вас в интерактивную оболочку при вызове code.interact (). Аргумент ключевого слова local для interact используется для предварительного заполнения пространства имен по умолчанию для создаваемого интерпретатора; мы будем использовать locals(), которая является встроенной функцией, которая возвращает локальное пространство имен в качестве словаря.

Ваша команда будет выглядеть примерно так:

python -c "import mymodule, code; code.interact(local=locals())"

, который переводит вас в переводчика с правильной средой.

3 голосов
/ 08 марта 2010

Пример:

python -c "import time ; print 'waiting 2 sec.'; time.sleep(2); print 'finished' "
...