Как можно запретить PyInstaller создание файлов в папке Temp при его использовании?

  • 22 августа 2023 г. 12:36
Ответы на вопрос 3
Чтобы запретить PyInstaller создание файлов во временной папке, вы можете использовать опцию `--clean` при компиляции вашего кода. Это приведет к удалению временных файлов после завершения компиляции.

Чтобы сохранить временные файлы внутри исполняемого файла .exe, вы можете использовать опции `--onefile` и `--add-data`. Опция `--onefile` поможет объединить все файлы в одном исполняемом файле .exe, а опция `--add-data` поможет добавить файлы с относительными путями к исполняемому файлу.

Пример использования опций `--onefile` и `--add-data`:

```
pyinstaller --onefile --add-data "path/to/your/files;." your_script.py
```

Здесь `path/to/your/files` - это путь к папке, содержащей ваши файлы, которые должны быть включены в исполняемый файл, а `.` - путь внутри исполняемого файла, куда они будут скопированы.

Относительные пути в опции `--add-data` могут быть адаптированы под вашу структуру папок.

Чтобы отключить отображение консоли при запуске исполняемого файла .exe, вы можете использовать опцию `--noconsole`. Если она не срабатывает в вашем случае, вы можете попробовать добавить следующий код в начало вашего скрипта на Python:

```python
import sys
if hasattr(sys, 'frozen'):
    import ctypes
    ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0)
```

Он проверяет, запущен ли скрипт из исполняемого файла, и если да, то скрывает консольное окно.

Надеюсь, это поможет вам решить ваши проблемы с PyInstaller!
subprocess.run([], creationflags=subprocess.CREATE_NO_WINDOW) 
 Скрывает окно выполнения программы при запуске с использованием модуля subprocess.

pyinstaller имеет флаг для изменения пути временных файлов, но его применение может не сработать и файлы всё равно будут сохранены в Temp.
Похожие вопросы