Mi trovo spesso a sviluppare nuovi moduli Julia e allo stesso tempo utilizzare quei moduli per il mio lavoro. Così avrò un notebook IPython (Jupyter), con qualcosa come:Che cos'è un buon flusso di lavoro per lo sviluppo di moduli Julia con IPython/Jupyter?
using DataFrames
using MyModule
allora farò qualcosa di simile:
x = myfunction(7, 3)
ma dovrò modificare tale funzione, e purtroppo a quel punto non posso semplicemente fare
using MyModule
di nuovo. Non sono davvero sicuro del perché; Ho pensato che chiamare using
dichiarasse semplicemente i moduli disponibili per renderli consapevoli dell'ambito globale, e quindi quando un nome è effettivamente necessario, il runtime cerca la definizione tra i moduli attualmente caricati (a partire da Main
).
Quindi non dovrebbe using MyModule
semplicemente aggiornare le definizioni degli elementi nel modulo già dichiarato? Perché devo interrompere e riavviare completamente il kernel per poter utilizzare le mie funzioni aggiornate? (E 'perché i nomi sono legati solo una volta per le funzioni che vengono dichiarati utilizzando la parola chiave function
?)
Ho guardato Julia Workflow Tips, ma non trovo l'intero sistema Tmp
, tst.jl
molto semplice o elegante ... almeno per un notebook.
Qualche suggerimento?
Sarei curioso di sapere se ti è capitato di trovare una risposta. – ARM
Si potrebbe dare un'occhiata a questa domanda: http://stackoverflow.com/questions/25028873/how-do-i-reload-a-module-in-an-active-julia-session-after-an- modifica Questo considera lo stesso problema, vale a dire il ricaricamento dei moduli. – niczky12
Indipendentemente dal fatto che * si possa * fare questo, non sono sicuro che * dovresti *. Quando ricarichi un modulo, ottieni comunque oggetti che precedono il modulo e non sei mai abbastanza sicuro se ciò che esegui sia realmente indipendente. Il mio flusso di lavoro per lo sviluppo del modulo è quello di eseguire la suite di test. Posso giocherellare con le funzioni in REPL o simili, ma se voglio guardare gli effetti a livello di modulo, eseguo i test. –