Modifica: in base al commento di Ulf Rompe, è importante che tu usi "1" invece di "0" , altrimenti interromperai sys.path .
Faccio python da un po 'di tempo ormai (più di un anno) e sono sempre confuso sul motivo per cui le persone consigliano di usare sys.path.append()
invece di sys.path.insert()
. Fammi dimostrare.
Diciamo che sto lavorando su un modulo chiamato PyWorkbooks (che è installato sul mio computer), ma contemporaneamente sto lavorando su un modulo diverso (diciamo PyJob) che incorpora PyWorkbooks. Mentre lavoro su PyJob trovo errori in PyWorkbooks che sto correggendo, quindi vorrei importare una versione di sviluppo.
Esistono diversi modi per lavorare su entrambi (ad esempio, potrei inserire il mio progetto PyWorkbooks all'interno di PyJob), ma a volte avrò ancora bisogno di giocare con il percorso. Tuttavia, non posso semplicemente fare un sys.path.append()
alla cartella in cui si trova PyWorkbooks . Perché? Perché python troverà prima i miei PyWorkbook installati!
Questo è il motivo per cui devi fare un sys.path.insert (1, path_to_dev_pyworkbooks)
In sintesi:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
o:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Questo mi ha causato alcuni problemi in passato, e mi piacerebbe davvero che noi (come comunità) iniziassimo a consigliare sys.path.insert(1, path)
, come se stessi inserendo manualmente un percorso, penso sia sicuro dire che è il percorso che desideri usare!
O ho qualcosa che non va? È una domanda che a volte mi dà fastidio e la volevo allo scoperto!
sys.path.insert(1, dev_folder)
ma ancora non trova il modulo dev e utilizza solo il modulo installato. Come lo risolvo?