Fixed pip related stuff in install script not working on debian bookworm

It uses this new "externally managed environment" thing where you can't install system/user level pip packages
This commit is contained in:
Donkie
2023-11-25 21:37:23 +01:00
parent 6f241605f4
commit 26b5545a29

View File

@@ -89,18 +89,42 @@ fi
# Update pip # Update pip
# #
echo -e "${GREEN}Updating pip...${NC}" echo -e "${GREEN}Updating pip...${NC}"
python3 -m pip install --user --upgrade pip &>/dev/null || exit 1
# Run pip upgrade command and capture stdout
upgrade_output=$(python3 -m pip install --user --upgrade pip 2>&1)
exit_code=$?
# Check if the upgrade command failed and contains the specified error message
is_externally_managed_env=$(echo "$upgrade_output" | grep "error: externally-managed-environment")
if [[ $exit_code -ne 0 ]]; then
if [[ $is_externally_managed_env ]]; then
echo -e "${GREEN}Warning:${NC} Failed to upgrade pip since it's version is managed by the OS. Continuing anyway..."
else
echo -e "${GREEN}Error:${NC} Pip upgrade failed with exit code $exit_code and the following output:"
echo "$upgrade_output"
exit 1
fi
else
echo -e "${GREEN}Pip updated successfully.${NC}"
fi
# #
# Install various pip packages if needed # Install various pip packages if needed
# #
packages=("setuptools" "wheel" "pdm") echo -e "${GREEN}Installing system-wide pip packages needed for Spoolman...${NC}"
for package in "${packages[@]}"; do if [[ $is_externally_managed_env ]]; then
if ! pip3 show "$package" &>/dev/null; then echo -e "${GREEN}Installing the packages using apt-get instead of pip since pip is externally managed...${NC}"
echo -e "${GREEN}Installing $package...${NC}" apt_packages=("python3-setuptools" "python3-wheel" "python3-pdm")
pip3 install --user "$package" &>/dev/null || exit 1 sudo apt-get install -y "${apt_packages[@]}" || exit 1
fi else
done packages=("setuptools" "wheel" "pdm")
for package in "${packages[@]}"; do
if ! pip3 show "$package" &>/dev/null; then
echo -e "${GREEN}Installing $package...${NC}"
pip3 install --user "$package" || exit 1
fi
done
fi
# #
# Add python bin dir to PATH if needed # Add python bin dir to PATH if needed