Existe uma maneira de modificar a PATH
variável de ambiente de forma independente da plataforma usando python?
Algo semelhante a os.path.join()
?
Existe uma maneira de modificar a PATH
variável de ambiente de forma independente da plataforma usando python?
Algo semelhante a os.path.join()
?
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' .)
fonte
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.
fonte
os.system
,os.popen
ousubprocess.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.