I am trying to install theano in Google Colab for testing. I have installed virtualenv
and created an environment:
!pip3 install virtualenv
!vir
Short answer, I don't believe it is possible, although you can always run
!pip3 install theano
I was able to activate the virtualenv, but I don't believe you can switch the current notebook to use the newly created virtualenv.
!pip3 install virtualenv
!virtualenv theanoEnv
!echo '#!/bin/bash \n . ./theanoEnv/bin/activate theanoEnv \n which python3' > source_theanoEnv.sh && chmod +x source_theanoEnv.sh && ./source_theanoEnv.sh && which python3
!which python3
I have put "which python3" in 3 places and the results are
/content/theanoEnv/bin/python3
/usr/bin/python3
/usr/bin/python3
So it looks like the "activate" is only temporary and Colaboratory/Jupyter are using /usr/bin/python3 still
Basically each ! command runs in its own shell, and Colaboratory does not know the environment changed
I was hoping I could follow these steps https://help.pythonanywhere.com/pages/IPythonNotebookVirtualenvs/
/content/theanoEnv/bin/pip3 install ipykernel
/content/theanoEnv/bin/python3 -m ipykernel install --user --name=theanoEnv
But I don't know what to set the kernel_class to
%config IPKernelApp.kernel_class='???'
Also, even if the above worked, I don't believe there is a way to restart the notebook to use the new kernel.
Perhaps someone more versed in Jupyter/Colaboratory could explain if this would be possible.
Basically each ! command runs in its own shell, and Colaboratory does not know the environment changed
I figured out a workaround for this. Since each shell is temporary, we stitch the environment activation command and the command to be executed in environment.
So after you do
!pip3 install virtualenv
!virtualenv theanoEnv
you can install theano in the environment by
!source /content/theanoEnv/bin/activate; pip3 install theano
Since the environment contents are stored on disk in theanoEnv directory, it is preserved. But you need to activate it for each new shell. For every command you need to run in the environment, simply prefix it with
!source /content/theanoEnv/bin/activate;
For example, to get a list of installed python packages (i.e. to run pip3 list
) in environment, run:
!source /content/theanoEnv/bin/activate; pip3 list
You can stitch multiple commands this way: (all of them will be executed in the same shell)
!source /content/theanoEnv/bin/activate; COMMAND1; COMMAND2; COMMAND3
You can check my notebook on Colab here.