Если ваша программа работает корректно с json файлом при сборке проекта через pyinstaller с расширением .py, но не работает с расширением .pyw, вероятно, проблема связана с различием в обработке стандартного ввода-вывода между .py и .pyw файлами.
.py файлы предназначены для запуска в консоли и имеют доступ к стандартному вводу-выводу (stdin, stdout). Они могут взаимодействовать с пользователем, принимать входные данные с клавиатуры, выводить информацию на консоль и т. д.
.pyw файлы, с другой стороны, предназначены для запуска без консоли (типично для программ с графическим интерфейсом). Они не имеют доступа к стандартному вводу-выводу, и, следовательно, не могут взаимодействовать с пользователем через консоль.
Если ваша программа требует ввода данных с консоли, но вы хотите запустить ее без консоли, вам придется модифицировать программу, чтобы она получала необходимые данные с другого источника, например, через графический интерфейс пользовательского интерфейса (GUI) или из файла.
Относительно второго вопроса, если ваш сервер не запускается при сборке программы с графическим интерфейсом, то это, скорее всего, вызвано тем, что графический интерфейс и сервер конфликтуют за один поток выполнения. Попробуйте запустить сервер в отдельном потоке или процессе, чтобы избежать этой проблемы.
Если вы можете предоставить больше информации о том, как ваша программа работает и какие ошибки возникают, будет проще предложить конкретные решения.