Есть ли способ, чтобы IPython автоматически перезагружал все измененные коды? Либо до того, как каждая строка будет выполнена в оболочке, либо не будет выполнена, когда она будет запрошена. Я занимаюсь большим количеством поисковых программ с использованием IPython и SciPy, и мне очень больно вручную перезагружать каждый модуль, когда я его меняю.Автозагрузка модулей в IPython
ответ
ПЕРЕСМОТРЕННОГО - см Andrew_1510-х answer ниже, так как IPython была обновлена.
...
Это было немного трудно понять, как попасть из пыльного сообщение об ошибке, но:
Он поставляется с IPython сейчас!
import ipy_autoreload
%autoreload 2
%aimport your_mod
# %autoreload? for help
... то каждый раз, когда вы звоните your_mod.dwim()
, он будет забрать последнюю версию.
Что делать, если он менее прямой? '% run sometest.py' содержит' import themod'. После редактирования 'themod.py', я хотел бы просто'% запустить sometest.py', но он не подбирает изменения. – Jed
Я думаю, что ipython 0.11 покончил с этой функцией. Или это просто переименовано/скрыто где-то? – SirVer
СэрВер, ты прав. Вздох. Очевидно, что это в пакете «карантин»: http://www.archlinux.org/packages/community/any/ipython/files/ –
Существует расширение для этого, но у меня нет опыта использования еще:
http://ipython.scipy.org/ipython/ipython/attachment/ticket/154/ipy_autoreload.py
Для IPython версии 3.1, 4.x, 5.x и
In [1]: %load_ext autoreload
In [2]: %autoreload 2
Тогда будет ваш модуль автоматически перезагружается по умолчанию. Это документ:
File: ...my/python/path/lib/python2.7/site-packages/IPython/extensions/autoreload.py
Docstring:
``autoreload`` is an IPython extension that reloads modules
automatically before executing the line of code typed.
This makes for example the following workflow possible:
.. sourcecode:: ipython
In [1]: %load_ext autoreload
In [2]: %autoreload 2
In [3]: from foo import some_function
In [4]: some_function()
Out[4]: 42
In [5]: # open foo.py in an editor and change some_function to return 43
In [6]: some_function()
Out[6]: 43
The module was reloaded without reloading it explicitly, and the
object imported with ``from foo import ...`` was also updated.
Существует трюк: когда вы забыть все из выше при использовании ipython
, просто попробуйте:
import autoreload
?autoreload
# Then you get all the above
Как уже упоминалось выше, необходимо расширение autoreload
. Если вы хотите, чтобы он автоматически запускается каждый раз, когда вы запускаете ipython
, вам нужно добавить его в файл ipython_config.py
запуска:
Это может быть необходимо, чтобы произвести один первый:
ipython profile create
Затем включите эти строки в ~/.ipython/profile_default/ipython_config.py
:
c.InteractiveShellApp.exec_lines = []
c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
c.InteractiveShellApp.exec_lines.append('%autoreload 2')
Как дополнительное предупреждение в случае, если вам необходимо, чтобы воспользоваться скомпилированного кода Python в .pyc
файлов:
c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in ipython_config.py to improve performance." ')
редактировать: вышеуказанные работы с версии 0.12.1 и 0.13
Это на самом деле здорово. Мне было интересно, почему никто другой не размещал решения для ее сохранения. Это также работает со старыми версиями IPython? Я использовал 0.12+. Я помню, что способ сохранения настроек ipython значительно изменился. –
Я использую 0.12.1, и еще не пробовал 0.13, поэтому я не знаю, будет ли он работать с 0.13+ –
Это хороший подход, но я думаю, что все, что вам нужно сделать, это заполнить extenstions который должен быть вокруг строки 27: 'c.InteractiveShellApp.extensions = ['autoreload']' – dvreed77
Вы можете использовать:
import ipy_autoreload
%autoreload 2
%aimport your_mod
если добавить ipython_config.py в ~/.ipython/profile_default реж с линиями как ниже, а затем функциональные автоперезагрузки будут загружены на IPython запуске (проверено на 2.0.0):
print "--------->>>>>>>> ENABLE AUTORELOAD <<<<<<<<<------------"
c = get_config()
c.InteractiveShellApp.exec_lines = []
c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
c.InteractiveShellApp.exec_lines.append('%autoreload 2')
- 1. IPython не перегрузочных модулей
- 2. Автозагрузка ноутбука Jupyter/Ipython во время исполнения
- 3. IPython 0.13: автозагрузка модулей каждый раз, когда я вхожу в команду?
- 4. Как автозагрузка моделей модулей Zend Framework?
- 5. несоответствие в количестве установленных модулей между ipython и ipython notebook
- 6. модели Автозагрузка, образует внутри модулей в рамках ZEND
- 7. Использование модулей Anaconda за пределами IPython
- 8. ZF2 - Включить (автозагрузка) класс/пространство имен для всех модулей
- 9. Что делает автозагрузка в zsh?
- 10. Как использовать магию IPython в скрипте для автоматической перезагрузки модулей?
- 11. композитор автозагрузка vs zend framework универсальная автозагрузка
- 12. AngularJS: Автозагрузка
- 13. Автозагрузка Javascript
- 14. Автозагрузка в подкаталоге
- 15. Автозагрузка карты в Swift
- 16. Автозагрузка черт в PHP
- 17. Автозагрузка в тестах Laravel
- 18. Автозагрузка констант в PHP?
- 19. Автозагрузка Breakpoints в БГД
- 20. Emacs 24's python.el + ipython не может заполнить имена модулей
- 21. модулей, необходимых для создания пользовательского виджета с ipython?
- 22. ipython autoreload не работает
- 23. Автозагрузка модульности/виджетов в PHP, CodeIgniter/Kohana
- 24. Автозагрузка не работает в сельдерей
- 25. Автозагрузка класса в Symfony 2.1
- 26. Автозагрузка в пользовательских библиотеках Codeigniter
- 27. Имена и автозагрузка в Laravel
- 28. Автозагрузка камеры в приложении iPhone?
- 29. Автозагрузка даты в SQL запросе
- 30. PHP Автозагрузка в пространствах имен
Здесь он реализован как расширение HTTP: //projects.scipy.org/ipython/ipython/ticket/154 –
Возможно, вы захотите изменить принятый ответ. – Peque
Я думаю, что обычно справедливо принять первый ответ, который отвечает на вопрос, кажется, что это немного значит изменить его спустя годы! –