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?
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?
Respostas:
Para definir uma variável env em um bloco de notas jupyter, basta usar os %
comandos mágicos, %env
ou %set_env
, por exemplo, %env MY_VAR=MY_VALUE
ou %env MY_VAR MY_VALUE
. (Usar%env
sozinho para imprimir as variáveis ambientais atuais.)
Veja: http://ipython.readthedocs.io/en/stable/interactive/magics.html
os.environ[var] = val
no backend: github.com/ipython/ipython/blob/master/IPython/core/magics/…
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
e env
):
{
"display_name": "Python 2 with environment",
"language": "python",
"argv": [
"/usr/bin/python2",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"env": {"LD_LIBRARY_PATH":""}
}
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.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 que PYTHONEXECUTABLE
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:
pip install python-dotenv
Carregue o .env
arquivo em um notebook Jupyter:
%load_ext dotenv
%dotenv
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 aqui
%env MY_VAR=MY_VALUE
deve ser a resposta correta para esta pergunta
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"
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.
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 formato VARIABLE_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.