Eu tenho um problema que o Jupyter não pode ver a variável env no arquivo bashrc, há uma maneira de carregar essas variáveis no jupyter ou adicionar a variável custome a ele?
python
bash
environment-variables
jupyter-notebook
Ehab AlBadawy
fonte
fonte
os.environ[var] = val
no backend: github.com/ipython/ipython/blob/master/IPython/core/magics/…Você também pode definir as variáveis em seu
kernel.json
arquivo:Minha solução é útil se você precisar das mesmas variáveis de ambiente sempre que iniciar um kernel jupyter, especialmente se você tiver vários conjuntos de variáveis de ambiente para tarefas diferentes.
Para criar um novo kernel ipython com suas variáveis de ambiente, faça o seguinte:
jupyter kernelspec list
para ver uma lista com os kernels instalados e onde os arquivos estão armazenados.python2
) para um novo diretório (por exemplopython2_myENV
).display_name
pelo novokernel.json
arquivo.env
dicionário definindo as variáveis de ambiente.Seu kernel json pode ter esta aparência (eu não modifiquei nada no kernel.json instalado, exceto
display_name
eenv
):{ "display_name": "Python 2 with environment", "language": "python", "argv": [ "/usr/bin/python2", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "env": {"LD_LIBRARY_PATH":""} }
Casos de uso e vantagens desta abordagem
LD_LIBRARY_PATH
que afeta o modo como os módulos compilados (por exemplo, escritos em C) são carregados. Definindo esta variável usando%set_env
não funcionou.fonte
C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
para adicionar ao caminho do sistema existente usando sua técnica sugerida? Funcionará se eu não estiver usando uma conta de administrador? Estou usando o Windows 10.sys.executable
menos quePYTHONEXECUTABLE
seja definido de antemão, que você deve definir antes de executar o python.Se estiver usando Python, você pode definir suas variáveis de ambiente em um
.env
arquivo e carregá-las de dentro de um notebook Jupyter usando python-dotenv .Instale o python-dotenv:
Carregue o
.env
arquivo em um notebook Jupyter:fonte
Você pode configurar variáveis de ambiente em seu código da seguinte maneira:
import sys,os,os.path sys.path.append(os.path.expanduser('~/code/eol_hsrl_python')) os.environ['HSRL_INSTRUMENT']='gvhsrl' os.environ['HSRL_CONFIG']=os.path.expanduser('~/hsrl_config')
É claro que esta é uma correção temporária, para obter uma permanente, você provavelmente precisará exportar as variáveis para o seu
~.profile
, mais informações podem ser encontradas aquifonte
%env MY_VAR=MY_VALUE
deve ser a resposta correta para esta perguntaSe você precisa da variável definida antes de iniciar o notebook, a única solução que funcionou para mim foi
env VARIABLE=$VARIABLE jupyter notebook
comexport VARIABLE=value
em.bashrc
.No meu caso, tensorflow precisa da variável exportada para importá-la com sucesso em um notebook.
fonte
Uma pegadinha que encontrei: Os dois comandos a seguir são equivalentes. Observe que o primeiro não pode usar aspas. De forma um tanto contra-intuitiva, citar a string ao usar
%env VAR ...
resultará na inclusão das aspas como parte do valor da variável, o que provavelmente não é o que você deseja.%env MYPATH=C:/Folder Name/file.txt
e
import os os.environ['MYPATH'] = "C:/Folder Name/file.txt"
fonte
Se você estiver usando o systemd, acabei de descobrir que você precisa adicioná-los ao arquivo de unidade do systemd. Isso no Ubuntu 16. Colocá-los no .profile e .bashrc (até mesmo no / etc / profile) resultou no ENV Vars não estar disponível nos blocos de notas Juypter.
Tive que editar:
/lib/systemd/system/jupyer-notebook.service
e coloque a variável que eu queria ler no arquivo de unidade como:
Environment=MYOWN_VAR=theVar
e só então pude ler de dentro do caderno da juypter.
fonte
Uma solução relacionada (de curto prazo) é armazenar suas variáveis de ambiente em um único arquivo, com um formato previsível, que pode ser obtido ao iniciar um terminal e / ou lido no notebook. Por exemplo, eu tenho um arquivo,,
.env
que tem minhas definições de variáveis de ambiente no formatoVARIABLE_NAME=VARIABLE_VALUE
(sem linhas em branco ou espaços extras). Você pode originar este arquivo nos arquivos.bashrc
ou.bash_profile
ao iniciar uma nova sessão de terminal e você pode ler isso em um notebook com algo como,import os env_vars = !cat ../script/.env for var in env_vars: key, value = var.split('=') os.environ[key] = value
Usei um caminho relativo para mostrar que esse
.env
arquivo pode residir em qualquer lugar e ser referenciado em relação ao diretório que contém o arquivo do notebook. Isso também tem a vantagem de não exibir os valores das variáveis em seu código em nenhum lugar.fonte