Respostas:
Você não define PYTHONPATH, você adiciona entradas a sys.path. É uma lista de diretórios que devem ser pesquisados em busca de pacotes Python, então você pode simplesmente anexar seus diretórios a essa lista.
sys.path.append('/path/to/whatever')
Na verdade, sys.pathé inicializado dividindo o valor de PYTHONPATHno caractere separador de caminho ( :em sistemas semelhantes ao Linux, ;no Windows).
Você também pode adicionar diretórios usando site.addsitedir, e esse método também levará em conta os .ptharquivos existentes nos diretórios que você passar. (Isso não seria o caso com os diretórios que você especifica em PYTHONPATH.)
Você pode obter e definir variáveis de ambiente por meio de os.environ:
import os
user_home = os.environ["HOME"]
os.environ["PYTHONPATH"] = "..."
Mas como o seu interpretador já está em execução, isso não terá efeito. Você é melhor usar
import sys
sys.path.append("...")
que é a matriz em que você PYTHONPATHserá transformado na inicialização do interpretador.
Se você colocar sys.path.append('dir/to/path')sem verificar se já está adicionado, você pode gerar uma longa lista em sys.path. Para isso, recomendo:
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
você pode definir PYTHONPATH, por os.environ['PATHPYTHON']=/some/path, então você precisa chamar os.system('python')para reiniciar o shell do python para tornar o caminho recém-adicionado eficaz.
os.system()não "reinicia o shell python", ele inicia uma nova instância interativa do Python. Quando você retorna disso, você está de volta ao script de chamada.
sys.path.insert(0, '/path/to/whatever').