Python Shell, Logging Commands для легкого повторного выполнения - PullRequest
2 голосов
/ 11 февраля 2010

Скажем, я делаю что-то подобное в оболочке Python для моего приложения Django:

>>>from myapp.models import User
>>>user = User.objects.get(pk=5)
>>>groups = user.groups.all()

Что я хотел бы сделать, так это как-то спрятать эти 3 команды, не выходя из оболочки. Цель состоит в том, чтобы я мог быстро восстановить аналогичную среду, если позже перезапущу сеанс оболочки.

Ответы [ 3 ]

2 голосов
/ 11 февраля 2010

Оболочка Django будет использовать IPython , если доступно, что поддерживает постоянную историю.

Кроме того, написание одноразовых скриптов не сложно .

1 голос
/ 13 февраля 2010

Koobz, так как вы только что стали недавно преобразовывать в ipython, есть крутой хак , который я использую для автоматического импорта всех моих моделей приложений в интерактивном режиме:

#!/bin/env python
# based on http://proteus-tech.com/blog/code-garden/bpython-django/
try:
    from django.core.management import setup_environ
    import settings
    setup_environ(settings)
    print "imported django settings"
    try:
        exec_strs = ["from %s.models import *"%apps for apps in settings.INSTALLED_APPS if apps not in ['django_extensions']]
        for x in exec_strs:
            try:
                exec(x)
            except:
                print 'not imported for %s' %x
        print 'imported django models'
    except:
        pass
except:
    pass

Тогда я просто псевдоним: ipython -i $HOME/.pythonrc

1 голос
/ 11 февраля 2010

Итак, благодаря Игнасио с установленным IPython:

>>>from myapp.models import User
>>>user = User.objects.get(pk=5)
>>>groups = user.groups.all()
>>>#Ipython Tricks Follow
>>>hist #shows you lines in your history
>>>edit 1:3 # Edit n:m lines above in text editor. I save it as ~/testscript
>>>run ~/testscript

Groovy!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...