|
23 | 23 |
|
24 | 24 | def run_command(command, shell=True, cwd=None): |
25 | 25 | print(f"--- Running command: {' '.join(command) if isinstance(command, list) else command}") |
26 | | - # Эта логика немного странная, но мы будем с ней работать, вызывая команду правильно |
27 | 26 | use_shell = isinstance(command, str) if sys.platform != "win32" else shell |
28 | 27 | process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=use_shell, cwd=cwd, text=True, encoding='utf-8') |
29 | 28 | for line in process.stdout: |
@@ -56,14 +55,14 @@ def create_and_build(name, req_file): |
56 | 55 | print(f"Installing dependencies for {name} from {req_file}...") |
57 | 56 |
|
58 | 57 | # VVVVVV --- ИСПРАВЛЕНИЕ ЗДЕСЬ --- VVVVVV |
59 | | - # Формируем команду как единую строку, чтобы функция run_command |
60 | | - # гарантированно использовала `shell=True`, что более надежно в CI/CD. |
61 | | - cmd_as_string = f"\"{str(python_executable)}\" -m pip install -r \"{str(req_file)}\"" |
| 58 | + # Убираем кавычки вокруг путей. В Linux-окружении без пробелов они не нужны и могут мешать. |
| 59 | + cmd_as_string = f"{str(python_executable)} -m pip install -r {str(req_file)}" |
62 | 60 | run_command(cmd_as_string) |
63 | 61 | # ^^^^^^ --- КОНЕЦ ИСПРАВЛЕНИЯ --- ^^^^^^ |
64 | 62 |
|
65 | 63 | print(f"Running PyInstaller for {name}...") |
66 | 64 |
|
| 65 | + # PyInstaller лучше вызывать списком, это более надежно |
67 | 66 | pyinstaller_command = [ |
68 | 67 | str(python_executable), "-m", "PyInstaller", |
69 | 68 | "--noconfirm", "--onefile", |
@@ -99,7 +98,7 @@ def create_and_build(name, req_file): |
99 | 98 | sys.exit(1) |
100 | 99 |
|
101 | 100 | VENV_DIR.mkdir(exist_ok=True) |
102 | | - DIST_PATH.mkdir(parents=True, exist_ok=True) # <-- предыдущее исправление оставлено |
| 101 | + DIST_PATH.mkdir(parents=True, exist_ok=True) |
103 | 102 |
|
104 | 103 | for name, req_filename in BUILDS.items(): |
105 | 104 | create_and_build(name, REQUIREMENTS_DIR / req_filename) |
|
0 commit comments