diff --git a/readthedocs/projects/tasks.py b/readthedocs/projects/tasks.py index 77d1ad8b526..745117002fb 100644 --- a/readthedocs/projects/tasks.py +++ b/readthedocs/projects/tasks.py @@ -5,6 +5,7 @@ """ import os +import sys import shutil import json import logging @@ -142,6 +143,19 @@ def run(self, pk, version_pk=None, build_pk=None, record=True, docker=False, self.setup_environment() + # Activate the conda environment + if self.config.use_conda: + os.environ['CONDA_DEFAULT_ENV'] = self.python_env.version.slug + os.environ['CONDA_ENV_PATH'] = os.path.join( + self.project.doc_path, + 'conda', + self.python_env.version.slug + ) + sys.path.insert( + 0, os.path.join(os.environ['CONDA_ENV_PATH'], "bin") + ) + os.environ["PATH"] = ":".join(sys.path) + # TODO the build object should have an idea of these states, extend # the model to include an idea of these outcomes outcomes = self.build_docs() @@ -160,6 +174,13 @@ def run(self, pk, version_pk=None, build_pk=None, record=True, docker=False, epub=outcomes['epub'], ) + # Deactivate the conda environment + if self.config.use_conda: + del os.environ['CONDA_DEFAULT_ENV'] + del os.environ['CONDA_ENV_PATH'] + sys.path.remove(os.path.join(os.environ['CONDA_ENV_PATH'], "bin")) + os.environ["PATH"] = ":".join(sys.path) + if self.build_env.failed: self.send_notifications()