web-dev-qa-db-fra.com

Dans le 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 que c'est important, sys? Comment fait-on ça?

95
TIMEX

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.)

165
David Z

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.

30
miku

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"]
5
unbeli

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.

0
tesla1060