Если вы разрабатываете программы на Питоне, то, уверен, вы хорошо знакомы с работой с ним в интерактивном режиме. Это самый простой и удобный способ проверить пришедшую в голову идею, запустить библиотечную функцию, пошагово прогнать какой-то алгоритм и т.п. без создания лишних мусорных файлов. Вобщем питоновская консоль — очень мощная и удобная вещь. У меня постоянно напрашивается сравнение с юникс-шеллом в языке. Если бы не две ложки дегтя в этой бочке меда: команду каждый раз приходится набирать заново, вместо того, чтобы просто нажать стрелку вверх и подправить команду, а также приходится писать много лишнего, что только добавляет опечаток и необходимости повторного набора. Вобщем я хочу как в баше: история + автодополнение.
Я удивлен почему это еще не сделано по умолчанию. Кстати, очень может быть, что это уже реализовано в вашей системе, и вам это совершенно неактуально — тогда можете совершенно смело пропустить эту статью. Возможно это пригодится кому-то другому. На попавшихся мне Macos, Freebsd, Debian и Fedora этого не было.
Для этого нужно создать где-то в недрах файловой системы файл initialize.py такого содержания:
Я предпочитаю такие файлы закидывать в ~/bin/.
А дальше при каждом запуске вначале выполняете этот скрипт. Конечно, это не надо делать руками — если вы используете bash в качестве оболочки, то просто добавьте в .bashrc строку:
Теперь работа с консолью питона станет не просто кайфом, а сплошным кайфом. Вызываем оболочку:
Самой собой история команд поначалу пуста — поэтому стрелку вверх жать не надо.
Создаем какой-нибудь объект — я для примера взял UserDict. После того как он импортирован начните набирать команду и нажмите <Tab>
После выхода из интерпретатора вся история команд будет записана в файл ~/.pyhist, и запустив консоль заново, мы можете легко повторить действия, которые делали в прошлый раз.
Очень может быть, что с первого раза у вас не заработает. Скорее всего дело в том, что не установлен модуль python-readline — именно так было у меня. На дебиане ставится элементарно:
Для других дистрибутивов — см. инструкцию к своему дистру.
Способ честно подсмотрен на просторах интернета. Надеюсь, будет вам полезен.
Я удивлен почему это еще не сделано по умолчанию. Кстати, очень может быть, что это уже реализовано в вашей системе, и вам это совершенно неактуально — тогда можете совершенно смело пропустить эту статью. Возможно это пригодится кому-то другому. На попавшихся мне Macos, Freebsd, Debian и Fedora этого не было.
Для этого нужно создать где-то в недрах файловой системы файл initialize.py такого содержания:
import sys, os, readline
histfile = os.path.join(os.environ["HOME"], ".pyhist")
try:
readline.read_history_file(histfile)
except IOError:
pass
import atexit
atexit.register(readline.write_history_file, histfile)
del os, histfile
try:
import readline
except ImportError:
print "Module readline not available."
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
* This source code was highlighted with Source Code Highlighter.
Я предпочитаю такие файлы закидывать в ~/bin/.
А дальше при каждом запуске вначале выполняете этот скрипт. Конечно, это не надо делать руками — если вы используете bash в качестве оболочки, то просто добавьте в .bashrc строку:
export PYTHONSTARTUP=$HOME/bin/initialize.py
Теперь работа с консолью питона станет не просто кайфом, а сплошным кайфом. Вызываем оболочку:
$ python
Python 2.5.2 (r252:60911, May 28 2008, 08:35:32)
Type "help", "copyright", "credits" or "license" for more information.
>>> from UserDict import UserDict
Самой собой история команд поначалу пуста — поэтому стрелку вверх жать не надо.
Создаем какой-нибудь объект — я для примера взял UserDict. После того как он импортирован начните набирать команду и нажмите <Tab>
>>> u=User # здесь нажат <Tab><Tab>
UserDict UserWarning
>>> u=UserDict()
# посмотрим какие у него есть поля и методы:
>>> u. # снова <tab><tab>
u.__class__ u.__delitem__ u.__init__ u.__repr__ u.copy u.get u.iteritems u.keys u.setdefault
u.__cmp__ u.__doc__ u.__len__ u.__setitem__ u.data u.has_key u.iterkeys u.pop u.update
u.__contains__ u.__getitem__ u.__module__ u.clear u.fromkeys u.items u.itervalues u.popitem u.values
>>> u.
* This source code was highlighted with Source Code Highlighter.
После выхода из интерпретатора вся история команд будет записана в файл ~/.pyhist, и запустив консоль заново, мы можете легко повторить действия, которые делали в прошлый раз.
Очень может быть, что с первого раза у вас не заработает. Скорее всего дело в том, что не установлен модуль python-readline — именно так было у меня. На дебиане ставится элементарно:
apt-get install python-readline
Для других дистрибутивов — см. инструкцию к своему дистру.
Способ честно подсмотрен на просторах интернета. Надеюсь, будет вам полезен.