Skip to content

Move venv to inside .env folder #767

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.30.0
1.31.0
27 changes: 26 additions & 1 deletion installer/bootstrap.bash
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,31 @@ function installed_or_install
return 0
}

function python_install_desired_version
{
# python_install_desired_version package [version_requirement]
if [[ -z "$1" ]]
then
echo "[tue-env](bootstrap) Error! No python package name provided to check for installation."
return 1
fi
local package version_requirement
package=$1
[[ -n "$2" ]] && version_requirement=$2

# First check if the package is already installed via apt
installed_or_install "${package}" "python3-${package}" || return 1

local installed_version
installed_version=$(/usr/bin/python3 -c "import pkg_resources; print(pkg_resources.get_distribution('${package}').version)" 2>/dev/null)
/usr/bin/python3 -c "import sys; from packaging.specifiers import SpecifierSet; from packaging.version import Version; sys.exit(Version('${installed_version}') not in SpecifierSet('${version_requirement}'))" 2> /dev/null && echo "${package}${version_requirement}: ${installed_version}" && return 0
# Make sure pip is installed
installed_or_install pip python3-pip
# Install the package
PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/python3 -m pip install --user "${package}${version_requirement}" || { echo "[tue-env](bootstrap) Error! Could not install '${package}${version_requirement}."; return 1; }
return 0
}

function file_exist_or_install
{
if [[ -z "$1" ]]
Expand Down Expand Up @@ -69,7 +94,7 @@ function main
# Make sure python3 is installed
installed_or_install python3
# Make sure python3-virtualenv is installed
installed_or_install virtualenv python3-virtualenv
python_install_desired_version virtualenv ">=20.24.0"

# Check if OS is Ubuntu
local distrib_id distrib_release
Expand Down
7 changes: 6 additions & 1 deletion setup.bash
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,13 @@ function _tue-env-main

# -----------------------------------------
# Load the python virtual environment if it exists
if [[ -d "${TUE_ENV_DIR}"/.venv/"${TUE_ENV}" ]]
if [[ -d "${TUE_ENV_DIR}"/.env/venv/ ]]
then
# shellcheck disable=SC1091
source "${TUE_ENV_DIR}"/.env/venv/bin/activate
elif [[ -d "${TUE_ENV_DIR}"/.venv/"${TUE_ENV}" ]]
then
echo -e "\e[33;1m[tue] virtual environment location '${TUE_ENV_DIR}/.venv/${TUE_ENV}' is deprecated. Please create a new environment using 'tue-env init-venv ${TUE_ENV}'.\e[0m"
# shellcheck disable=SC1090
source "${TUE_ENV_DIR}"/.venv/"${TUE_ENV}"/bin/activate
fi
Expand Down
54 changes: 44 additions & 10 deletions setup/tue-env.bash
Original file line number Diff line number Diff line change
Expand Up @@ -586,20 +586,21 @@ Environment directory '${tue_env_dir}' didn't exist (anymore)"""
fi

/usr/bin/python3 -c "import virtualenv" 2>/dev/null ||
{ echo -e "[tue-env](init-venv) 'virtualenv' module is not found. Make sure you install it 'sudo apt-get install python3-virtualenv'"; return 1; }
{ echo -e "[tue-env](init-venv) 'virtualenv' module is not found. Make sure you install it \"/usr/bin/python3 -m pip install --user 'virtualenv>=20.24.0'\""; return 1; }

[[ -f "${TUE_DIR}"/user/envs/"${tue_env}" ]] || { echo "[tue-env](init-venv) No such environment: '${tue_env}'"; return 1; }
local tue_env_dir
tue_env_dir=$(cat "${TUE_DIR}"/user/envs/"${tue_env}")
[[ -d "${tue_env_dir}" ]] || { echo "[tue-env](init-venv) Environment directory '${tue_env_dir}' (environment '${tue_env}') does not exist"; return 1; }
local venv_dir
venv_dir=${tue_env_dir}/.venv/${tue_env}
local venv_dir venv_dir_deprecated
venv_dir=${tue_env_dir}/.env/venv
venv_dir_deprecated=${tue_env_dir}/.venv/"${tue_env}"

if [[ -d "${venv_dir}" ]]
then
local venv_dir_moved
venv_dir_moved=${venv_dir}.$(date +%F_%R)
if [[ $(basename "${VIRTUAL_ENV}") == "${tue_env}" ]]
if [[ "${VIRTUAL_ENV_PROMPT}" == "${tue_env}" ]]
then
echo "[tue-env](init-venv) deactivating currently active virtualenv of environment '${tue_env}'"
deactivate
Expand All @@ -608,6 +609,19 @@ Environment directory '${tue_env_dir}' didn't exist (anymore)"""
echo "[tue-env](init-venv) Moved old virtualenv of environment '${tue_env}' to ${venv_dir_moved}"
echo "Don't use it anymore as its old path is hardcoded in the virtualenv"
fi
if [[ -d "${venv_dir_deprecated}" ]]
then
local venv_dir_deprecated_moved
venv_dir_deprecated_moved=${venv_dir_deprecated}.$(date +%F_%R)
if [[ $(basename "${VIRTUAL_ENV}") == "${tue_env}" ]]
then
echo "[tue-env](init-venv) deactivating currently active virtualenv of environment '${tue_env}'"
deactivate
fi
mv -f "${venv_dir_deprecated}" "${venv_dir_deprecated_moved}"
echo "[tue-env](init-venv) Moved old virtualenv of environment '${tue_env}' to ${venv_dir_deprecated_moved}"
echo "Don't use it anymore as its old path is hardcoded in the virtualenv"
fi

local system_site_args
if [[ "${include_system_site}" == "true" ]]
Expand All @@ -619,16 +633,16 @@ Environment directory '${tue_env_dir}' didn't exist (anymore)"""
then
setuptools_args="--no-setuptools"
fi
/usr/bin/python3 -m virtualenv "${venv_dir}" ${system_site_args:+${system_site_args} }${setuptools_args:+${setuptools_args} }--symlinks -q 2>/dev/null
/usr/bin/python3 -m virtualenv "${venv_dir}" ${system_site_args:+${system_site_args} }${setuptools_args:+${setuptools_args} }--symlinks --prompt "${tue_env}" -q 2>/dev/null
echo "[tue-env](init-venv) Initialized virtualenv of environment '${tue_env}'"

if [ "${tue_env}" == "${TUE_ENV}" ]
then
# No need to check if the environment really exists, as it was checked before
local tue_env_dir
tue_env_dir=$(cat "${TUE_DIR}"/user/envs/"${tue_env}")
# shellcheck disable=SC1090
source "${tue_env_dir}"/.venv/"${tue_env}"/bin/activate
# shellcheck disable=SC1091
source "${tue_env_dir}"/.env/venv/bin/activate
echo "[tue-env](init-venv) Activated new virtualenv of currently active environment '${tue_env}'"
fi

Expand Down Expand Up @@ -674,12 +688,14 @@ Environment directory '${tue_env_dir}' didn't exist (anymore)"""
local tue_env_dir
tue_env_dir=$(cat "${TUE_DIR}"/user/envs/"${tue_env}")
[[ -d "${tue_env_dir}" ]] || { echo "[tue-env](rm-venv) Environment directory '${tue_env_dir}' (environment '${tue_env}') does not exist"; return 1; }
local venv_dir
venv_dir=${tue_env_dir}/.venv/${tue_env}
local venv_dir venv_dir_deprecated
venv_dir=${tue_env_dir}/.env/venv
venv_dir_deprecated=${tue_env_dir}/.venv/"${tue_env}"


if [[ -d "${venv_dir}" ]]
then
if [[ $(basename "${VIRTUAL_ENV}") == "${tue_env}" ]]
if [[ "${VIRTUAL_ENV_PROMPT}" == "${tue_env}" ]]
then
echo "[tue-env](rm-venv) deactivating currently active virtualenv of environment '${tue_env}'"
deactivate
Expand All @@ -695,6 +711,24 @@ Environment directory '${tue_env_dir}' didn't exist (anymore)"""
mv -f "${venv_dir}" "${venv_dir_moved}"
echo "[tue-env](rm-venv) Moved old virtualenv of environment '${tue_env}' to ${venv_dir_moved}"
fi
elif [[ -d "${venv_dir_deprecated}" ]]
then
if [[ $(basename "${VIRTUAL_ENV}") == "${tue_env}" ]]
then
echo "[tue-env](rm-venv) deactivating currently active virtualenv of environment '${tue_env}'"
deactivate
fi
if [[ "${purge}" == "true" ]]
then
rm -rf "${venv_dir}"
echo "[tue-env](rm-venv) Purged virtualenv of environment '${tue_env}'"
return 0
else
local venv_dir_deprecated_moved
venv_dir_deprecated_moved=${venv_dir_deprecated}.$(date +%F_%R)
mv -f "${venv_dir_deprecated}" "${venv_dir_deprecated_moved}"
echo "[tue-env](rm-venv) Moved old virtualenv of environment '${tue_env}' to ${venv_dir_deprecated_moved}"
fi
else
echo "[tue-env](rm-venv) No virtualenv found for environment '${tue_env}'"
fi
Expand Down