module A2KM::ENV_UTILS
Constants
- ACTIVATE_TPL
- ACTIVATE_TPL_S
- CONDA_ACTIVATE
- ENV_CMD_TPL
- VIRTUALENV_ACTIVATE
Public Instance Methods
activate_cmd(kind)
click to toggle source
# File lib/a2km/env.rb, line 28 def activate_cmd(kind) case kind when 'conda' return CONDA_ACTIVATE when 'venv' return VIRTUALENV_ACTIVATE else throw ArgumentError, "kind must be 'conda' or 'venv', not '#{kind}'" end end
get_prefix(name, kind)
click to toggle source
# File lib/a2km/env.rb, line 75 def get_prefix(name, kind) in_env(name, 'python -c "import sys; print(sys.prefix)"', kind: kind) end
in_env(env, cmd, kind: 'conda')
click to toggle source
# File lib/a2km/env.rb, line 39 def in_env(env, cmd, kind: 'conda') Open3::popen2('bash') do |stdin, stdout, wait_thr| stdin.puts 'set -e' stdin.puts ACTIVATE_TPL.render('name' => env, 'activate' => activate_cmd(kind)) stdin.puts cmd stdin.close status = wait_thr.value if status != 0 raise ENVError.new("Failed to run #{cmd} in #{kind} env: #{env}") end return stdout.read end end
ipykernel_version(env, kind: 'conda')
click to toggle source
# File lib/a2km/env.rb, line 58 def ipykernel_version(env, kind: 'conda') in_env(env, "python -c 'import ipykernel; print(ipykernel.__version__)'", kind: kind) end
kernel_script(name, kind: 'conda')
click to toggle source
# File lib/a2km/env.rb, line 53 def kernel_script(name, kind: 'conda') # return kernel script as a string ENV_CMD_TPL.render('name' => name, 'activate' => activate_cmd(kind)) end
make_kernel_exe(kernel_name, env_name, kind: 'conda')
click to toggle source
# File lib/a2km/env.rb, line 62 def make_kernel_exe(kernel_name, env_name, kind: 'conda') path = A2KM.get_kernel(kernel_name)['resource_dir'] cmd = kernel_script(env_name, kind: kind) kernel_exe = File.join(path, "jupyter-kernel-#{kernel_name}") puts "Making executable '#{kernel_exe}'" File.open(kernel_exe, 'w') do |f| f.write(cmd) end File.chmod(0o755, kernel_exe) return kernel_exe end