Edit: sur la base d'un commentaire d'Ulf Rompe, il est important d'utiliser "1" au lieu de "0" , sinon vous casserez sys.path .
Je fais du python depuis un certain temps maintenant (plus d'un an), et je ne comprends toujours pas pourquoi les gens vous recommandent de l'utiliser à la sys.path.append()
place de sys.path.insert()
. Laissez-moi vous démontrer.
Disons que je travaille sur un module nommé PyWorkbooks (qui est installé sur mon ordinateur), mais que je travaille simultanément sur un module différent (disons PyJob) qui intègre PyWorkbooks. Pendant que je travaille sur PyJob, je trouve des erreurs dans PyWorkbooks que je corrige, donc je voudrais importer une version de développement.
Il y a plusieurs façons de travailler sur les deux (je pourrais mettre mon projet PyWorkbooks à l'intérieur de PyJob, par exemple), mais parfois je devrai toujours jouer avec le chemin. Cependant, je ne peux pas simplement faire un sys.path.append()
dans le dossier où se trouve PyWorkbooks . Pourquoi? Parce que python trouvera d'abord mes PyWorkbooks installés!
C'est pourquoi vous devez faire un sys.path.insert (1, path_to_dev_pyworkbooks)
En résumé:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
ou:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Cela m'a causé quelques blocages dans le passé, et j'aimerais vraiment que nous (en tant que communauté) commencions à recommander sys.path.insert(1, path)
, comme si vous insérez manuellement un chemin, je pense qu'il est prudent de dire que c'est le chemin que vous voulez utiliser!
Ou est-ce que j'ai quelque chose qui ne va pas? C'est une question qui me dérange parfois et je la voulais au grand jour!
sys.path.insert(1, dev_folder)
mais il ne trouve toujours pas le module de développement, et n'utilise que le module installé. Comment puis-je réparer ça?