Saya punya masalah bahwa Jupyter tidak dapat melihat variabel env di file bashrc, apakah ada cara untuk memuat variabel ini di jupyter atau menambahkan variabel custome ke dalamnya?
python
bash
environment-variables
jupyter-notebook
Ehab AlBadawy
sumber
sumber
os.environ[var] = val
di backend: github.com/ipython/ipython/blob/master/IPython/core/magics/…Anda juga dapat mengatur variabel di
kernel.json
file Anda :Solusi saya berguna jika Anda memerlukan variabel lingkungan yang sama setiap kali Anda memulai kernel jupyter, terutama jika Anda memiliki beberapa set variabel lingkungan untuk tugas yang berbeda.
Untuk membuat kernel ipython baru dengan variabel lingkungan Anda, lakukan hal berikut:
jupyter kernelspec list
untuk melihat daftar dengan kernel yang diinstal dan di mana file disimpan.python2
) ke direktori baru (misalnyapython2_myENV
).display_name
dikernel.json
file baru .env
kamus yang mendefinisikan variabel lingkungan.Kernel json Anda akan terlihat seperti ini (saya tidak mengubah apa pun dari kernel.json yang diinstal kecuali
display_name
danenv
):{ "display_name": "Python 2 with environment", "language": "python", "argv": [ "/usr/bin/python2", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "env": {"LD_LIBRARY_PATH":""} }
Gunakan kasus dan keuntungan dari pendekatan ini
LD_LIBRARY_PATH
yang mempengaruhi bagaimana modul yang dikompilasi (misalnya ditulis dalam C) dimuat. Menyetel variabel ini menggunakan%set_env
tidak berhasil.sumber
C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
ke jalur sistem yang ada menggunakan teknik yang Anda sarankan? Apakah akan berhasil jika saya tidak menggunakan akun admin? Saya menggunakan Windows 10.sys.executable
kecualiPYTHONEXECUTABLE
diatur sebelumnya, yang harus Anda atur sebelum python dijalankan.Jika Anda menggunakan Python, Anda dapat menentukan variabel lingkungan Anda dalam sebuah
.env
file dan memuatnya dari dalam notebook Jupyter menggunakan python-dotenv .Instal python-dotenv:
Muat
.env
file di notebook Jupyter:sumber
Anda dapat menyiapkan variabel lingkungan dalam kode Anda sebagai berikut:
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')
Ini tentu saja merupakan perbaikan sementara, untuk mendapatkan yang permanen, Anda mungkin perlu mengekspor variabel ke Anda
~.profile
, informasi lebih lanjut dapat ditemukan di sinisumber
%env MY_VAR=MY_VALUE
harus menjadi jawaban yang benar untuk pertanyaan iniJika Anda memerlukan set variabel sebelum Anda memulai notebook, satu-satunya solusi yang berhasil untuk saya adalah
env VARIABLE=$VARIABLE jupyter notebook
denganexport VARIABLE=value
in.bashrc
.Dalam kasus saya, tensorflow memerlukan variabel yang diekspor agar berhasil mengimpornya di notebook.
sumber
Gotcha yang saya temui: Dua perintah berikut ini setara. Perhatikan bahwa yang pertama tidak dapat menggunakan tanda kutip. Agak berlawanan dengan intuisi, mengutip string saat menggunakan
%env VAR ...
akan menghasilkan tanda kutip yang disertakan sebagai bagian dari nilai variabel, yang mungkin bukan yang Anda inginkan.%env MYPATH=C:/Folder Name/file.txt
dan
import os os.environ['MYPATH'] = "C:/Folder Name/file.txt"
sumber
Jika Anda menggunakan systemd, saya baru tahu bahwa Anda tampaknya harus menambahkannya ke file unit systemd. Ini di Ubuntu 16. Menempatkannya ke .profile dan .bashrc (bahkan / etc / profile) mengakibatkan ENV Vars tidak tersedia di notebook juypter.
Saya harus mengedit:
/lib/systemd/system/jupyer-notebook.service
dan masukkan variabel yang ingin saya baca di file unit seperti:
Environment=MYOWN_VAR=theVar
dan baru setelah itu saya dapat membacanya dari dalam notebook juypter.
sumber
Solusi terkait (jangka pendek) adalah menyimpan variabel lingkungan Anda dalam satu file, dengan format yang dapat diprediksi, yang dapat bersumber saat memulai terminal dan / atau membaca ke dalam notebook. Misalnya, saya memiliki file ,,
.env
yang memiliki definisi variabel lingkungan saya dalam formatVARIABLE_NAME=VARIABLE_VALUE
(tidak ada baris kosong atau spasi ekstra). Anda dapat mengambil file ini di file.bashrc
atau.bash_profile
ketika memulai sesi terminal baru dan Anda dapat membacanya menjadi buku catatan dengan sesuatu seperti,import os env_vars = !cat ../script/.env for var in env_vars: key, value = var.split('=') os.environ[key] = value
Saya menggunakan jalur relatif untuk menunjukkan bahwa
.env
file ini dapat hidup di mana saja dan direferensikan secara relatif ke direktori yang berisi file notebook. Ini juga memiliki keuntungan karena tidak menampilkan nilai variabel dalam kode Anda di mana pun.sumber