From 5ba9fb0b56a5e65541bfca63881bfb7d0b8f9f5c Mon Sep 17 00:00:00 2001 From: Min RK Date: Thu, 30 Nov 2017 12:48:54 +0100 Subject: [PATCH] run freeze-requirements in docker avoids mismatch between freeze env and 'real' env, e.g. running on mac, where dependencies differ, or running with Python 3.4 vs 3.5, etc. --- repo2docker/buildpacks/python/freeze.bash | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/repo2docker/buildpacks/python/freeze.bash b/repo2docker/buildpacks/python/freeze.bash index bb614326..54bb30f9 100755 --- a/repo2docker/buildpacks/python/freeze.bash +++ b/repo2docker/buildpacks/python/freeze.bash @@ -17,23 +17,23 @@ cd $(dirname "$($realpath "$0")") function freeze-requirements { # Freeze a requirements file $2 into a frozen requirements file $3 # Requires that a completely empty venv of appropriate version exist in $1 - VENV_PATH="$1" + PYTHON_VERSION="$1" REQUIREMENTS_FILE="$2" FROZEN_FILE="$3" + if [[ $(echo ${PYTHON_VERSION} | cut -d. -f 1) == "2" ]]; then + VENV=virtualenv + else + VENV=venv + fi - ./${VENV_PATH}/bin/pip install --no-cache-dir -r ${REQUIREMENTS_FILE} echo "# AUTO GENERATED FROM ${REQUIREMENTS_FILE}, DO NOT MANUALLY MODIFY" > ${FROZEN_FILE} echo "# Frozen on $(date -u)" >> ${FROZEN_FILE} - ./${VENV_PATH}/bin/pip freeze | sort >> ${FROZEN_FILE} + docker run --rm -v $PWD:/python -it python:${PYTHON_VERSION} \ + sh -c " + python -m $VENV /venv + /venv/bin/pip install -r /python/${REQUIREMENTS_FILE} && + /venv/bin/pip freeze | sort --ignore-case >> /python/${FROZEN_FILE}" } -rm -rf py3venv -python3 -m venv py3venv -freeze-requirements py3venv requirements.txt requirements.frozen.txt -rm -rf py3venv - - -rm -rf py2venv -virtualenv -p python2 py2venv -freeze-requirements py2venv requirements2.txt requirements2.frozen.txt -rm -rf py2venv +freeze-requirements 3.5 requirements.txt requirements.frozen.txt +freeze-requirements 2.7 requirements2.txt requirements2.frozen.txt