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 %env
ya %set_env
, mesela, %env MY_VAR=MY_VALUE
ya da %env MY_VAR MY_VALUE
. ( %env
Mevcut ç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] = val
arka uçta kullandığını unutmayın : github.com/ipython/ipython/blob/master/IPython/core/magics/…
kernel.json
Dosyanı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 list
Yü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_name
yeni de kernel.json
dosyaya.env
Ortam değişkenlerini tanımlayan bir sözlük ekleyin .Çekirdek json'unuz şöyle görünebilir ( display_name
ve 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_PATH
derlenmiş 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_env
iş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.executable
sürece PYTHONEXECUTABLE
sen piton çalışmadan önce setine sahip olan önceden ayarlanır.
Python kullanıyorsanız, ortam değişkenlerinizi bir .env
dosyada tanımlayabilir ve python-dotenv kullanarak bir Jupyter not defterinden yükleyebilirsiniz .
Python-dotenv'yi yükleyin:
pip install python-dotenv
.env
Dosyayı 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_VALUE
cevabı, 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 notebook
ile export VARIABLE=value
oldu .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ı .bashrc
veya .bash_profile
dosyaları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 .env
dosyanı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.