Thomas Decaux created ZEPPELIN-5811: ---------------------------------------
Summary: Shell script for activate conda env Key: ZEPPELIN-5811 URL: https://issues.apache.org/jira/browse/ZEPPELIN-5811 Project: Zeppelin Issue Type: Improvement Components: r-interpreter, zeppelin-interpreter Affects Versions: 0.10.1 Reporter: Thomas Decaux When using R interpreter, conda to install dependencies, Zeppelin have a very nice feature to activate conda env, but it creates from java code an executable shell script: the following code is executed: [https://github.com/apache/zeppelin/blob/master/zeppelin-jupyter-interpreter/src/main/java/org/apache/zeppelin/jupyter/JupyterKernelInterpreter.java#L199] {code:java} private String activateCondaEnv(String envName) throws IOException { ... File scriptFile = Files.createTempFile("zeppelin_jupyter_kernel_", ".sh").toFile(); try (FileWriter writer = new FileWriter(scriptFile)) { IOUtils.write(String.format("chmod 777 -R %s \nsource %s/bin/activate \nconda-unpack", envName, envName), writer); } ... } {code} In common case this is very nice and work well. But in my use case, we have multiple conda envs, I cant add it in the Dockerfile (> 4G). We use "conda pack" to create tar archive, then "wget" from the container to download and "tar -xzf" to install the conda env. I am wondering, if the shell script created by java could be a simple file inside "/opt/zeppelin/bin": {code:java} conda-activate-env.sh: chmod 777 -R /opt/conda/envs/$1 source /opt/conda/envs/$1/bin/activate conda-unpack{code} So this is possible to override the file and change this behavior easily, in my case: {code:java} conda-activate-env.sh: cd /tmp wget https://conda-envs/$1.tar.gz mkdir -p /opt/conda/envs/$1 tar -xzf $1.tar.gz -C /opt/conda/envs/$1/ chmod 777 -R /opt/conda/envs/$1 source /opt/conda/envs/$1/bin/activate{code} I can do a PR very soon -- This message was sent by Atlassian Jira (v8.20.10#820010)