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 que c'est important, 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 dans lesquels il faut chercher Python, vous pouvez donc simplement ajouter vos répertoires à cette liste).
sys.path.append('/path/to/whatever')
En réalité, sys.path
_ est initialisé en scindant la valeur de PYTHONPATH
sur le caractère séparateur de chemin (:
sur des systèmes de type Linux, ;
sur Windows).
Vous pouvez également ajouter des répertoires en utilisant site.addsitedir
, et cette méthode tiendra également compte de .pth
fichiers existant dans les répertoires que vous passez. (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 puisque votre interprète est déjà en cours d'exécution, cela n'aura aucun effet. Vous feriez mieux d'utiliser
import sys
sys.path.append("...")
qui est le tableau dans lequel votre PYTHONPATH
sera transformé au démarrage de l'interpréteur.
Désolé de rouvrir la question, mais je pense que cela peut aider quelqu'un:
Si vous mettez sys.path.append('dir/to/path')
sans cocher il est déjà ajouté, vous pourriez 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 qui rouvre la question.
PYTHONPATH se termine 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 python Shell pour créer le chemin nouvellement ajouté efficace.