En script Python, comment définir PYTHONPATH?

Je sais comment le définir dans mon / etc / profile et dans mes variables d’environnement.

Mais que faire si je veux le définir lors d’un script? Est-ce importation os, sys? Comment fait-on ça?

Vous ne définissez pas PYTHONPATH , vous ajoutez des entrées à sys.path . C’est une liste de répertoires à rechercher pour les paquets Python, vous pouvez donc simplement append vos répertoires à cette liste.

 sys.path.append('/path/to/whatever') 

En fait, sys.path est initialisé en divisant la valeur de PYTHONPATH sur le caractère séparateur de chemin ( : sur les systèmes de type Linux, sous Windows).

Vous pouvez également append des répertoires à l’aide de site.addsitedir , et cette méthode prendra également en compte les fichiers .pth existant dans les répertoires que vous transmettez. (Ce ne serait pas le cas avec les répertoires que vous spécifiez dans PYTHONPATH .)

Vous pouvez obtenir et définir des variables d’environnement via os.environ :

 import os user_home = os.environ["HOME"] os.environ["PYTHONPATH"] = "..." 

Mais comme votre interprète est déjà en cours d’exécution, cela n’aura aucun effet. Il vaut mieux utiliser

 import sys sys.path.append("...") 

quel est le tableau dans lequel votre PYTHONPATH sera transformé au démarrage de l’interpréteur.

Désolé pour rouvrir la question, mais je pense que cela peut aider quelqu’un:

Si vous mettez sys.path.append('dir/to/path') sans le cocher, il est déjà ajouté, vous pouvez générer une longue liste dans sys.path . Pour cela, je recommande ceci:

 import sys import os # if you want this directory try: sys.path.index('/dir/path') # Or os.getcwd() for this directory except ValueError: sys.path.append('/dir/path') # Or os.getcwd() for this directory 

Je suis désolé si j’ai ennuyé quelqu’un rouvrant la question.

PYTHONPATH se retrouve dans sys.path , que vous pouvez modifier à l’exécution.

 import sys sys.path += ["whatever"] 

vous pouvez définir PYTHONPATH , par os.environ['PATHPYTHON']=/some/path , puis vous devez appeler os.system('python') pour redémarrer le shell python pour que le nouveau chemin ajouté soit effectif.

Cela fonctionne aussi:

 import sys sys.path.extend(["/path/to/dotpy/file/"])