Existe uma maneira de modificar a PATH
variável de ambiente de forma independente da plataforma usando python?
Algo semelhante a os.path.join()
?
Respostas:
Você deve ser capaz de modificar os.environ
.
Como os.pathsep
é o caractere para separar caminhos diferentes, você deve usar isso para anexar cada novo caminho:
os.environ["PATH"] += os.pathsep + path
ou, se houver vários caminhos para adicionar em uma lista:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Como você mencionou, os.path.join
também pode ser usado para cada caminho individual que você deve anexar, caso precise construí-los a partir de partes separadas.
os.pathsep
eu mencionei (específico para PATH)?
os.path.sep != os.pathsep
.
Observe que os.environ
não é realmente um dicionário. É um objeto especial semelhante a um dicionário que define as variáveis de ambiente no processo atual usando setenv .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Isso significa que PATH
(e outras variáveis de ambiente) estarão visíveis para o código C executado no mesmo processo.
(Uma vez que os comentários não podem conter formatação, tenho que colocar isso em uma resposta, mas acho que é um ponto importante a se fazer. Este é realmente um comentário sobre o comentário sobre não haver equivalente a 'exportar' .)
A advertência a ter em conta ao modificar as variáveis de ambiente em Python é que não há equivalente do comando shell "export". Não há como injetar mudanças no processo atual, apenas processos filhos.
os.system
, os.popen
ou subprocess.Popen
deveriam ser usados a partir do aplicativo Python para iniciar outros processos. Caso contrário, é praticamente inútil.
export
faz com que uma variável seja copiada no ambiente de todos os processos filho , mas não tem efeito no processo pai.