Editar: basado en un comentario de Ulf Rompe, es importante que use "1" en lugar de "0" , de lo contrario romperá sys.path .
He estado haciendo Python durante bastante tiempo (más de un año), y siempre me confunde por qué la gente recomienda que use en sys.path.append()
lugar de sys.path.insert()
. Déjame demostrarte.
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 trabajo en PyJob, encuentro errores en PyWorkbooks que estoy corrigiendo, así que me gustaría importar una versión de desarrollo.
Hay varias formas de trabajar en ambos (podría poner mi proyecto PyWorkbooks dentro de PyJob, por ejemplo), pero a veces todavía necesitaré jugar con la ruta. Sin embargo, no puedo simplemente hacer una sys.path.append()
en la carpeta donde se encuentra PyWorkbooks . ¿Por qué? ¡Porque python encontrará primero mis PyWorkbooks instalados!
Es por eso que tienes 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 me ha causado algunos problemas en el pasado, y realmente me gustaría que 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 esa es la ruta que desea ¡usar!
¿O tengo algo mal? Es una pregunta que a veces me molesta y ¡la quería al descubierto!
sys.path.insert(1, dev_folder)
pero todavía no encuentro el módulo de desarrollo y solo estoy usando el módulo instalado. ¿Cómo puedo solucionar esto?