91 lines
2.3 KiB
Bash
Executable file
91 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
|
|
# Warn if still in a venv
|
|
|
|
if [ -n "$VIRTUAL_ENV" ]; then
|
|
echo "The current venv is still active! Run deactivate first!"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
python_versions=""
|
|
for dir in $(echo "$PATH" | tr ':' ' '); do
|
|
for version in "$dir"/python3.[0-9]*; do
|
|
# Überprüfe, ob die Datei tatsächlich existiert (falls kein Treffer, wird $version auf "$dir/python3.[0-9]*" gesetzt)
|
|
if [ -e "$version" ]; then
|
|
# Überprüfe, ob die Datei existiert und ausführbar ist
|
|
if [ -x "$version" ] && "$version" --version >/dev/null 2>&1; then
|
|
python_versions="$python_versions $version"
|
|
fi
|
|
fi
|
|
done
|
|
done
|
|
|
|
if [ -z "$python_versions" ]; then
|
|
echo "No Python3 versions found."
|
|
exit 1
|
|
fi
|
|
|
|
# Entferne Duplikate und sortiere die Python-Versionen
|
|
python_versions=$(echo "$python_versions" | tr ' ' '\n' | sort -u -r | tr '\n' ' ')
|
|
|
|
# Nummerierte Liste der Python-Versionen anzeigen
|
|
echo "Installed Python3 versions:"
|
|
i=1
|
|
for version in $python_versions; do
|
|
echo "$i) $(basename "$version")"
|
|
i=$((i + 1))
|
|
done
|
|
|
|
# Benutzer nach der Auswahl fragen
|
|
echo "Select the number of the Python version you want to use:"
|
|
read user_choice
|
|
|
|
if [ -z "$user_choice" ]; then
|
|
user_choice=1
|
|
fi
|
|
|
|
|
|
# Überprüfen, ob die Eingabe eine Zahl ist
|
|
if echo "$user_choice" | grep -qE '^[0-9]+$'; then
|
|
i=1
|
|
for version in $python_versions; do
|
|
if [ "$i" -eq "$user_choice" ]; then
|
|
python_version=$(basename "$version")
|
|
break
|
|
fi
|
|
i=$((i + 1))
|
|
done
|
|
|
|
# Überprüfen, ob eine gültige Auswahl getroffen wurde
|
|
if [ -n "$python_version" ]; then
|
|
echo "You selected: $version"
|
|
else
|
|
echo "Invalid selection."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Please enter a valid number."
|
|
exit 1
|
|
fi
|
|
|
|
# Additional parameter
|
|
additional_parameters="--upgrade-deps --clear"
|
|
|
|
echo "Should the venv have access to the system packages? (y/n)"
|
|
read -r add_system_packages
|
|
if [ "$add_system_packages" = "y" ]; then
|
|
additional_parameters="$additional_parameters --system-site-packages"
|
|
fi
|
|
|
|
# Create venv
|
|
$version -m venv venv $additional_parameters
|
|
source ./venv/bin/activate
|
|
|
|
# Install requirements.txt
|
|
echo "Install packages from requirements.txt? (y/n)"
|
|
read -r install_requirements_txt
|
|
if [ "$install_requirements_txt" = "y" ]; then
|
|
python3 -m pip install -r requirements.txt
|
|
fi
|