Jupyter'in bashrc dosyasında env değişkenini görememesi ile ilgili bir sorunum var, bu değişkenleri jupyter'a yüklemenin veya ona custome değişkeni eklemenin bir yolu var mı?
Jupyter'in bashrc dosyasında env değişkenini görememesi ile ilgili bir sorunum var, bu değişkenleri jupyter'a yüklemenin veya ona custome değişkeni eklemenin bir yolu var mı?
Yanıtlar:
Bir jupyter defterine bir env değişkeni ayarlamak sadece kullanmak için %sihirli komutları ya %envya %set_env, mesela, %env MY_VAR=MY_VALUEya da %env MY_VAR MY_VALUE. ( %envMevcut çevresel değişkenleri yazdırmak için tek başına kullanın .)
Bakınız: http://ipython.readthedocs.io/en/stable/interactive/magics.html
os.environ[var] = valarka uçta kullandığını unutmayın : github.com/ipython/ipython/blob/master/IPython/core/magics/…
kernel.jsonDosyanızdaki değişkenleri de ayarlayabilirsiniz :Bir jupyter çekirdeğini her başlattığınızda aynı ortam değişkenlerine ihtiyacınız varsa, özellikle de farklı görevler için birden fazla ortam değişkenine sahipseniz benim çözümüm kullanışlıdır.
Ortam değişkenlerinizle yeni bir ipython çekirdeği oluşturmak için aşağıdakileri yapın:
jupyter kernelspec listYüklü çekirdekler ve dosyaların depolandığı bir listeyi görmek için çalıştırın .python2) yeni bir dizine (ör python2_myENV. ) Kopyalayın .display_nameyeni de kernel.jsondosyaya.envOrtam değişkenlerini tanımlayan bir sözlük ekleyin .Çekirdek json'unuz şöyle görünebilir ( display_nameve dışında kurulu kernel.json'dan hiçbir şey değiştirmedim 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_PATHderlenmiş modüllerin (örneğin C ile yazılmış) nasıl yükleneceğini etkileyen değişkeni ayarlamak istedim . Bu değişkeni kullanarak ayarlamak %set_envişe yaramadı.C:\Program Files (x86)\Graphviz2.38\bin\dot.exeÖnerilen tekniğinizi kullanarak mevcut sistem yoluna nasıl ekleyebileceğimi bana söyleyebilir misiniz ? Yönetici hesabı kullanmıyorsam çalışacak mı? Windows 10 kullanıyorum
sys.executablesürece PYTHONEXECUTABLEsen piton çalışmadan önce setine sahip olan önceden ayarlanır.
Python kullanıyorsanız, ortam değişkenlerinizi bir .envdosyada tanımlayabilir ve python-dotenv kullanarak bir Jupyter not defterinden yükleyebilirsiniz .
Python-dotenv'yi yükleyin:
pip install python-dotenv
.envDosyayı bir Jupyter not defterine yükleyin :
%load_ext dotenv
%dotenv
Kodunuzda ortam değişkenlerini aşağıdaki şekilde ayarlayabilirsiniz:
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')
Bu, tabii ki geçici bir düzeltme ise, kalıcı bir düzeltme elde etmek için, muhtemelen değişkenleri içeri aktarmanız gerekir ~.profile, daha fazla bilgiyi burada bulabilirsiniz.
%env MY_VAR=MY_VALUEcevabı, bu sorunun doğru cevabı olmalı
Dizüstü bilgisayarı başlatmadan önce değişken setine ihtiyacınız varsa, benim için çalışan tek çözüm in env VARIABLE=$VARIABLE jupyter notebookile export VARIABLE=valueoldu .bashrc.
Benim durumumda tensorflow, bir deftere başarılı bir şekilde içe aktarmak için dışa aktarılan değişkene ihtiyaç duyar.
Karşılaştığım bir sorun: Aşağıdaki iki komut eşdeğerdir. İlk Not değil kutu tırnak kullanabilirsiniz. Sezgiye tam tersi bir şekilde, kullanırken dizeyi %env VAR ...tırnak içine almak, değişken değerinin bir parçası olarak tırnak işaretlerinin eklenmesiyle sonuçlanacaktır, ki bu muhtemelen istediğiniz şey değildir.
%env MYPATH=C:/Folder Name/file.txt
ve
import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"
Systemd kullanıyorsanız, onları systemd birim dosyasına eklemeniz gerektiğini anladım. Bu Ubuntu 16'da. Bunları .profile ve .bashrc'ye (hatta / etc / profile) koymak, ENV Vars'ın juypter not defterlerinde bulunmamasına neden oldu.
Düzenlemem gerekiyordu:
/lib/systemd/system/jupyer-notebook.service
ve okumak istediğim değişkeni birim dosyaya şöyle koyun:
Environment=MYOWN_VAR=theVar
ve ancak o zaman onu juypter defterinden okuyabildim.
İlgili (kısa vadeli) bir çözüm, ortam değişkenlerinizi, bir terminal başlatılırken ve / veya not defterine okurken kaynaklanabilen tahmin edilebilir bir formatta tek bir dosyada depolamaktır. Örneğin .env, formatta ortam değişkeni tanımlarına sahip bir dosyam var VARIABLE_NAME=VARIABLE_VALUE(boş satırlar veya fazladan boşluklar yok). Yeni bir terminal oturumuna başlarken bu dosyayı .bashrcveya .bash_profiledosyalarından kaynaklayabilirsiniz ve bunu aşağıdaki gibi bir not defterine okuyabilirsiniz:
import os
env_vars = !cat ../script/.env
for var in env_vars:
key, value = var.split('=')
os.environ[key] = value
Bu .envdosyanın herhangi bir yerde yaşayabileceğini ve not defteri dosyasını içeren dizine göre başvurulabileceğini göstermek için göreli bir yol kullandım . Bu aynı zamanda, kodunuzdaki değişken değerleri hiçbir yerde göstermeme avantajına da sahiptir.