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 PYTHONPATH
no 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 .pth
arquivos 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ê PYTHONPATH
será 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')
.