Editar: basado en un comentario de Ulf Rompe, es importante que use "1" en lugar de "0", de lo contrario, va a romper sys.path.¿Por qué usar sys.path.append (ruta) en lugar de sys.path.insert (1, ruta)?
He estado haciendo python durante bastante tiempo (más de un año), y siempre estoy confundido de por qué las personas recomiendan que use sys.path.append()
en lugar de sys.path.insert()
. Déjame demostrar.
Digamos que estoy trabajando en un módulo llamado PyWorkbooks (que está instalado en mi computadora), pero estoy trabajando simultáneamente en un módulo diferente (digamos PyJob) que incorpora PyWorkbooks. Mientras estoy trabajando en PyJob encuentro errores en PyWorkbooks que estoy corrigiendo, así que me gustaría importar una versión de desarrollo.
Hay varias maneras de trabajar en ambas (podría poner mi proyecto de PyWorkbooks dentro de PyJob, por ejemplo), pero a veces todavía necesitaré jugar con la ruta. Sin embargo, no puedo simplemente hacer un sys.path.append()
en la carpeta donde está PyWorkbooks en. ¿Por qué? ¡Porque Python encontrará primero mis PyWorkbooks instalados!
Esto es por lo que tiene que hacer un sys.path.insert (1, path_to_dev_pyworkbooks)
En resumen:
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
Esto ha causado más de una Hangups para mí en el pasado, y realmente me gustaría si nosotros (como comunidad) comenzáramos a recomendar sys.path.insert(1, path)
, como si estuviera insertando manualmente una ruta, creo que es seguro decir que ese es el camino ¡quieres usar!
¿O tengo algo mal? ¡Es una pregunta que a veces me molesta y lo quería abiertamente!
I've done 's ys.path.insert (1, dev_folder) 'pero aún no encuentra el módulo dev, y solo usa el módulo instalado. ¿Cómo puedo solucionar esto? – endolith