diff --git a/README.rst b/README.rst
index 4fba76a33d61c89a9471785c354905ff2fd0e47d..a251c3a4a04fa5591a2c08c28ff4f34a56bfbda1 100644
--- a/README.rst
+++ b/README.rst
@@ -35,6 +35,41 @@ After installation, you should make sure that the home directory is in the PATH
 
     4. export PATH=$HOME/.local/bin:$PATH
 
+Installation using virtual python environment
+---------------------------------------------
+
+Create virtual environment::
+
+    module load anaconda/3
+    python -m venv /path/to/new/virtual/environment
+    source /path/to/new/virtual/environment/bin/activate
+
+Clone from git::
+
+    cd /path/to/packages
+    git clone https://git.xfel.eu/gitlab/detectors/pycalibration.git
+    cd pycalibration
+
+Edit path to the python environment in the bin/activate.sh file. Change::
+
+    export PATH=/home/${USER}/.local/bin:$PATH
+
+to::
+
+    export PATH=/path/to/new/virtual/environment/bin:$PATH
+
+Install the package::
+
+    pip install -r requirements.txt
+
+In additional install pyDetLib package, which is required for many notebooks::
+
+    cd /path/to/packages
+    git clone https://git.xfel.eu/gitlab/karaboDevices/pyDetLib.git
+    cd pyDetLib/lib
+    pip install -r requirements.txt
+    pip install .
+
 
 Development Installation
 ------------------------
diff --git a/activate b/bin/activate.sh
similarity index 76%
rename from activate
rename to bin/activate.sh
index f106500479f53df5571ede6e677be24a48cf6c7a..9584c3b78f61ec4a2c565e277aee4dafae1ee9de 100644
--- a/activate
+++ b/bin/activate.sh
@@ -1,4 +1,5 @@
 source /etc/profile.d/modules.sh
 module load anaconda/3
 module load texlive
+# export path to python environment
 export PATH=/home/${USER}/.local/bin:$PATH
diff --git a/bin/slurm_calibrate.sh b/bin/slurm_calibrate.sh
index 5b7105a5b7682278a556f171c97066d92fc6c0aa..44be0e93e511c491fe6171badb0e0f49c708d1f2 100755
--- a/bin/slurm_calibrate.sh
+++ b/bin/slurm_calibrate.sh
@@ -6,7 +6,7 @@ python_path=$2
 ipython_path=$3
 jupyter_path=$4
 ipcluster_path="${5}"
-krb_activate_path=$6
+activate_path=$6
 uuid=$7
 notebook=$8
 detector=$9
@@ -21,7 +21,7 @@ echo "Python path: $python_path"
 echo "IPython path: $ipython_path"
 echo "Jupyter path: $jupyter_path"
 echo "IP-Cluster path: $ipcluster_path"
-echo "Karabo activate: $krb_activate_path"
+echo "Environment activate: $activate_path"
 echo "IP-Cluster profile: $uuid"
 echo "notebook: $notebook"
 echo "detector: $detector"
@@ -34,15 +34,7 @@ echo "job ID: $SLURM_JOB_ID"
 export CAL_NOTEBOOK_NAME=$notebook
 
 # set-up enviroment
-if [ "${krb_activate_path}" != "NO_KRB_ACTIVATE" ]
-then
-    source ${krb_activate_path}
-else
-    source /etc/profile.d/modules.sh
-    module load anaconda/3
-    module load texlive
-    export PATH=/home/${USER}/.local/bin:$PATH
-fi
+source ${activate_path}
 
 echo "Starting influx feeder"
 ./cal_influx_feeder.sh $notebook $detector $caltype > /dev/null 2>&1  &
diff --git a/xfel_calibrate/calibrate.py b/xfel_calibrate/calibrate.py
index 944dc8f676923227d10e6bdc68a6615d3d7e038b..ee22e2fbd7ebf7adddd6e861cb1e3d75df432be3 100755
--- a/xfel_calibrate/calibrate.py
+++ b/xfel_calibrate/calibrate.py
@@ -641,8 +641,8 @@ def concurrent_run(temp_path, nb, nbname, args, cparm=None, cval=None,
                   ipython_path,  # path to ipython
                   jupyter_path,  # path to jupyter
                   ipcluster_path,  # path to ipcluster
-                  # karabo activate path
-                  karabo_activate_path if karabo_activate_path else "NO_KRB_ACTIVATE",
+                  # python activate path
+                  activate_path if activate_path!="" else "{}/bin/activate.sh".format(os.path.dirname(__file__)),
                   args.get("cluster_profile", "NO_CLUSTER"),
                   '"{}"'.format(base_name.upper()),
                   '"{}"'.format(args["detector"].upper()),
diff --git a/xfel_calibrate/settings.py b/xfel_calibrate/settings.py
index 3b9ee2144029a4f2a5e9b9ef1823e37ada525e6b..fdf56f40ca519b4e7e16ec60a2558ba62de3aaf9 100644
--- a/xfel_calibrate/settings.py
+++ b/xfel_calibrate/settings.py
@@ -12,8 +12,8 @@ ipython_path = "ipython"
 # Path to use for calling Jupyter. If the environment is correctly set, simply the command
 jupyter_path = "jupyter"
 
-# Path to find the Karabo activate script at, set to an empty string if not running in a Karabo environemnt
-karabo_activate_path = ""
+# Path to find activate script
+activate_path = ""
 
 # Path to use for calling ipcluster. If the environment is correctly set, simply the command
 ipcluster_path = "ipcluster"