diff --git a/venv_create.py b/venv_create.py index c58c4d4..309f4ab 100644 --- a/venv_create.py +++ b/venv_create.py @@ -5,35 +5,56 @@ import urllib.request import zipfile import shutil -VENV_DIR = "venv" -REQUIREMENTS_FILE = "requirements.txt" +# Katalog nadrzędny względem projektu +BASE_DIR = os.path.abspath(os.path.join(os.getcwd(), os.pardir)) +VENV_DIR = os.path.join(BASE_DIR, "venv") +REQUIREMENTS_SRC = os.path.join(os.getcwd(), "requirements.txt") +REQUIREMENTS_DEST = os.path.join(VENV_DIR, "requirements.txt") + MODEL_URL = "https://alphacephei.com/vosk/models/vosk-model-small-pl-0.22.zip" -MODEL_ZIP = "vosk-model-small-pl-0.22.zip" -MODEL_DIR = "vosk-model-small-pl-0.22" +MODEL_ZIP = os.path.join(VENV_DIR, "vosk-model-small-pl-0.22.zip") +MODEL_DIR = os.path.join(VENV_DIR, "vosk-model-small-pl-0.22") + +VOSKPL_SRC = os.path.join(os.getcwd(), "voskpl.py") +VOSKPL_DEST = os.path.join(VENV_DIR, "voskpl.py") + + +def copy_voskpl(): + print("[+] Kopiowanie voskpl.py do venv...") + shutil.copy(VOSKPL_SRC, VOSKPL_DEST) def create_virtualenv(): - print("[+] Tworzenie środowiska wirtualnego...") + print(f"[+] Tworzenie środowiska wirtualnego w: {VENV_DIR}") subprocess.check_call([sys.executable, "-m", "venv", VENV_DIR]) +def copy_requirements(): + print("[+] Kopiowanie requirements.txt do venv...") + shutil.copy(REQUIREMENTS_SRC, REQUIREMENTS_DEST) + + def install_requirements(): print("[+] Instalacja pakietów z requirements.txt...") - pip_path = os.path.join(VENV_DIR, "bin", "pip") if os.name != "nt" else os.path.join(VENV_DIR, "Scripts", "pip.exe") - subprocess.check_call([pip_path, "install", "-r", REQUIREMENTS_FILE]) + pip_path = ( + os.path.join(VENV_DIR, "bin", "pip") + if os.name != "nt" + else os.path.join(VENV_DIR, "Scripts", "pip.exe") + ) + subprocess.check_call([pip_path, "install", "-r", REQUIREMENTS_DEST]) def download_model(): if os.path.exists(MODEL_DIR): - print("[i] Model już istnieje, pomijam pobieranie.") + print("[i] Model już istnieje w venv, pomijam pobieranie.") return - print(f"[+] Pobieranie modelu z {MODEL_URL}...") + print(f"[+] Pobieranie modelu do: {MODEL_ZIP}") urllib.request.urlretrieve(MODEL_URL, MODEL_ZIP) print("[+] Rozpakowywanie modelu...") - with zipfile.ZipFile(MODEL_ZIP, 'r') as zip_ref: - zip_ref.extractall(".") + with zipfile.ZipFile(MODEL_ZIP, "r") as zip_ref: + zip_ref.extractall(VENV_DIR) print("[+] Usuwanie archiwum ZIP...") os.remove(MODEL_ZIP) @@ -41,8 +62,10 @@ def download_model(): def main(): create_virtualenv() + copy_requirements() install_requirements() download_model() + copy_voskpl() print("[✓] Gotowe!")