From f79b925ee291b254464db38b46a22d924204f0cd Mon Sep 17 00:00:00 2001 From: Alex Murkoff <413x1nkp@gmail.com> Date: Thu, 13 Jun 2024 21:52:49 +0700 Subject: [PATCH] refactor(scripts): simplify run.sh script (#48) * refactor(scripts): simplify run.sh script a lot of the contents of run.sh is either wrong, unnecessary, or both! a program runner-script that installs software on your PC is a terrible idea, since users themselves should make such decisions, not some random installer/runner scripts from a github repo. the overfixation on python3.8 makes this script practically entirely useless on any linux system that isn't based on debian, or is based on debian but is heavily modified. on archlinux this script is useless, it wont install anything for you and it wont find python3.8 since there's no such thing as python3.8 ANYWHERE except for a few distros where older versions of software are not stored in an archive, but rather in the packages repo * refactor(scripts): apply a lot more of refactoring of run script * fix(scripts): remove env variable setting for macOS systems use --pycmd python instead of --pycmd python3 --- run.sh | 58 +++++++++++++++++----------------------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/run.sh b/run.sh index 80221d3..f011baf 100755 --- a/run.sh +++ b/run.sh @@ -1,51 +1,27 @@ #!/bin/sh -if [ "$(uname)" = "Darwin" ]; then - # macOS specific env: - export PYTORCH_ENABLE_MPS_FALLBACK=1 - export PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 +set -fa + +# Check if Python is installed +if ! command -v python; then + echo "Python not found. Please install Python using your package manager or via PyEnv." + exit 1 fi -if [ -d ".venv" ]; then - echo "Activate venv..." - . .venv/bin/activate -else - echo "Create venv..." - requirements_file="requirements/main.txt" +requirements_file="requirements/main.txt" +venv_path=".venv" - # Check if Python 3.8 is installed - if ! (command -v python3.8 >/dev/null 2>&1 || pyenv versions --bare | grep -q "3.8"); then - echo "Python 3 not found. Attempting to install 3.8..." - if [ "$(uname)" = "Darwin" ] && command -v brew >/dev/null 2>&1; then - brew install python@3.8 - elif [ "$(uname)" = "Linux" ] && command -v apt-get >/dev/null 2>&1; then - sudo apt update - sudo apt install -y python3.8 - else - echo "Please install Python 3.8 manually." - exit 1 - fi - fi +if [[ ! -d "${venv_path}" ]]; then + echo "Creating venv..." - python3.8 -m venv .venv - . .venv/bin/activate + python -m venv "${venv_path}" + source "${venv_path}/bin/activate" - # Check if required packages are installed and install them if not - if [ -f "${requirements_file}" ]; then - installed_packages=$(python3.8 -m pip freeze) - while IFS= read -r package; do - expr "${package}" : "^#.*" > /dev/null && continue - package_name=$(echo "${package}" | sed 's/[<>=!].*//') - if ! echo "${installed_packages}" | grep -q "${package_name}"; then - echo "${package_name} not found. Attempting to install..." - python3.8 -m pip install --upgrade "${package}" - fi - done < "${requirements_file}" - else - echo "${requirements_file} not found. Please ensure the requirements file with required packages exists." - exit 1 - fi + # Check if required packages are up-to-date + pip install --upgrade -r "${requirements_file}" fi +echo "Activating venv..." +source "${venv_path}/bin/activate" # Run the main script -python3 web.py --pycmd python3 +python web.py --pycmd python