Modifica: in base al commento di Ulf Rompe, è importante utilizzare "1" anziché "0", altrimenti si interromperà sys.path.Perché utilizzare sys.path.append (percorso) anziché sys.path.insert (1, percorso)?
Ho eseguito python da un po 'di tempo (oltre un anno) e sono sempre confuso sul motivo per cui le persone consigliano di utilizzare sys.path.append()
anziché sys.path.insert()
. Lasciami dimostrare.
Diciamo che sto lavorando a un modulo chiamato PyWorkbooks (che è installato sul mio computer), ma sto contemporaneamente lavorando su un modulo diverso (diciamo PyJob) che incorpora PyWorkbooks. Mentre sto lavorando su PyJob trovo errori in PyWorkbooks che sto correggendo, quindi mi piacerebbe importare una versione di sviluppo.
Ci sono diversi modi per lavorare su entrambi (potrei inserire il mio progetto PyWorkbooks all'interno di PyJob, ad esempio), ma a volte ho ancora bisogno di giocare con il percorso. Tuttavia, non posso semplicemente fare un sys.path.append()
nella cartella in cui PyWorkbooks è a. Perché? Perché python troverà prima i miei PyWorkbook installati!
Questo è il motivo per cui si deve fare uno 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 ha causato alcuni hangups per me in passato, e mi piacerebbe molto che noi (come comunità) iniziassimo a raccomandare lo sys.path.insert(1, path)
, come se stessimo inserendo manualmente un percorso, penso che sia sicuro dire che quello è il percorso tu vuoi usare!
Oppure ho qualcosa che non va? È una domanda che a volte mi dà fastidio e lo volevo allo scoperto!
Ho fatto 's ys.path.insert (1, dev_folder) 'ma non trova ancora il modulo dev e usa solo il modulo installato. Come posso risolvere questo? – endolith