Czy istnieje sposób na automatyczne ponowne załadowanie IPython wszystkich zmienionych kodów? Albo przed wykonaniem każdej linii w powłoce, albo w przypadku jej braku, gdy jest to wymagane. Zajmuję się programowaniem eksploracyjnym przy użyciu IPythona i SciPy, a ręczne ładowanie każdego modułu za każdym razem, gdy go zmieniam, jest bardzo trudne.Automatyczne ładowanie modułów w IPython
Odpowiedz
zrewidowane - proszę zobaczyć Andrew_1510 na answer poniżej, jak ipython został zaktualizowany.
...
To było trochę trudno zorientować się, jak się tam dostać z zakurzonym raportu o błędzie, ale:
It statki z ipython teraz!
import ipy_autoreload
%autoreload 2
%aimport your_mod
# %autoreload? for help
... wtedy za każdym razem wywołać your_mod.dwim()
, to będzie podnieść najnowszą wersję.
Co, jeśli jest mniej bezpośredni? '% run sometest.py' zawiera' importować plik '. Po edycji 'themod.py', chciałbym po prostu'% uruchomić sometest.py', ale nie odbiera on zmian. – Jed
Myślę, że ipython 0.11 wyłączył tę funkcję. Czy jest to po prostu przemianowane/ukryte gdzieś? – SirVer
SirVer, masz rację. Westchnienie. Najwyraźniej jest to pakiet "kwarantanny": http://www.archlinux.org/packages/community/any/ipython/files/ –
Jest przedłużeniem za to, ale nie mam doświadczenia użytkowania jeszcze:
http://ipython.scipy.org/ipython/ipython/attachment/ticket/154/ipy_autoreload.py
Dla ipython wersji 3.1, 4.x, 5.x
In [1]: %load_ext autoreload
In [2]: %autoreload 2
Wtedy twój moduł zostanie auto-reloaded domyślnie. To jest doc:
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.
Jest trick: kiedy zapomnieć cały z powyższym podczas korzystania ipython
, po prostu spróbuj:
import autoreload
?autoreload
# Then you get all the above
Jak wspomniano powyżej, trzeba rozszerzenie autoreload
. Jeśli chcesz, aby automatycznie uruchomić każdym uruchomieniu ipython
, trzeba dodać ją do pliku ipython_config.py
startowego:
może być konieczne, aby wygenerować jeden pierwszy:
ipython profile create
Następnie zawierać te linie w ~/.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')
jak również opcjonalnie ostrzeżenie w przypadku potrzeby skorzystania z skompilowanego kodu Pythona w .pyc
plików:
c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in ipython_config.py to improve performance." ')
edit: Powyższe działa z wersją 0.12.1 i 0.13
To jest naprawdę świetne. Zastanawiałem się, dlaczego nikt inny nie zamieszczał rozwiązań, by go zachować. Czy działa to również ze starszymi wersjami IPython? Używam 0.12+. Przypominam, że sposób, w jaki ipython przechowuje modyfikacje, znacznie się zmienił. –
Używam 0.12.1, a jeszcze nie próbowałem 0.13, więc nie wiem, czy będzie działać z 0.13+ –
To jest dobre podejście, ale myślę, że wszystko, co musisz zrobić, to wypełnić extenstions która powinna być w pobliżu linii 27: 'c.InteractiveShellApp.extensions = ['autoreload']' – dvreed77
Można użyć:
import ipy_autoreload
%autoreload 2
%aimport your_mod
jeśli dodać ipython_config.py do ~/.ipython/profile_default reż Z liniami takimi jak poniżej funkcja automatycznego ładowania zostanie załadowana podczas uruchamiania aplikacji ipython (testowane w wersji 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. Automatyczne ładowanie właściwości w PHP
- 2. Automatyczne ładowanie stałych w PHP?
- 3. ipython: ponowne importowanie modułów przy użyciu% run
- 4. Jak działa ładowanie leniwych modułów w ES6
- 5. Android Studio - automatyczne ładowanie projektu
- 6. ipython: automatyczne echo wyniku przypisania zadania?
- 7. ipython: automatyczne przedłużenie obciążenie na początku
- 8. Automatyczne ładowanie frameworka w kontenerze dokowania
- 9. Leniwe ładowanie modułów AngularJS z RequireJS
- 10. Ładowanie modułów non amd za pomocą require.js
- 11. RequireJs: Stosować Automatyczne ładowanie-deps z podkładką
- 12. JSF i automatyczne ponowne ładowanie plików xhtml
- 13. Automatyczne ładowanie PHP za pomocą SplClassLoader?
- 14. Automatyczne ładowanie szablonu prędkości nie działa
- 15. Jak włączyć automatyczne ładowanie Grails 3.x?
- 16. Jak wyłączyć automatyczne ponowne ładowanie serwera WWW?
- 17. Automatyczne programowanie i ładowanie zakładki jquery
- 18. Ładowanie modułów Node.js dynamicznie w oparciu o trasę
- 19. Czy automatyczne ładowanie nazw w PHP musi korzystać z folderów?
- 20. Automatyczne ładowanie z przestrzeniami nazw w PHP 5.3?
- 21. Wyłącz automatyczne ładowanie informacji JBoss News Blogs w Eclipse
- 22. Automatyczne ponowne ładowanie zasobów klasy Java w IntelliJ IDEA
- 23. Ładowanie modułów przez imp.load_source o tej samej nazwie wynikające z połączenia modułów
- 24. Requirejs - ładowanie modułów tylko wtedy, gdy warunek jest prawdziwy
- 25. Automatyczne ładowanie pliku config.php dla wszystkich stron, zanim cokolwiek innego
- 26. Automatyczne ładowanie nie udało się zdefiniować funkcji calc-dispatch
- 27. Adobe Acrobat Reader Tabs Zapisywanie i automatyczne ładowanie
- 28. Wyłącz automatyczne ponowne ładowanie Chrome na błąd przekroczenia limitu czasu
- 29. Automatyczne ładowanie kompozytora - klasa obciążenia z katalogu nadrzędnego
- 30. Automatyczne ładowanie szyny/stała rozdzielczość tworzy moduły widmowe
Tutaj jest zaimplementowana jako rozszerzenie http: //projects.scipy.org/ipython/ipython/ticket/154 –
Możesz rozważyć zmianę akceptowanej odpowiedzi. – Peque
Wydaje mi się, że zwykle jest godziwa akceptacja pierwszej odpowiedzi, która odpowiada na pytanie, wydaje się nieco sensowna zmiana lat później! –