Как скомпилировать несколько .py файлов в один без импорта?

В первом скрипте "main.py" нет импорта второго файла "my_file2.py". Там в конце цикла прописано: subprocess.Popen([sys.executable, path+"my_file2.py"])
Вот этот второй файл "my_file2.py" мне нужно добавить к "main.py" и поместить в один ".exe" . Я объединяю эти файлы в одну папку "data", и запускаю команду ниже, но она не добавляет "my_file2.py" к "main.py":

pyinstaller --onefile ./data/main.py

Есть ли вариант, кроме импорта в main.py?


Ответы (2 шт):

Автор решения: Fox Fox

Написать скрипт школьного уровня сложности, который соединяет все Ваши скрипты в один в том порядке, в котором Вам нужно, просто как текстовые файлы, таким образом избавляя от необходимости каких-либо подобных импортов. Последним в результат добавляется главный скрипт. Каждый из остальных скриптов должен содержать ту самую рабочую функцию (то есть, импортируется не файл по имени, а функция из файла). Первой в результат добавляется библиотека функций. В ней также содержится некие стартовые команды, формирующие среду.

Вот пример того, как это использую я лично (содержимое скрипта для сборки результирующего скрипта небольшого приложения и его компиляции):

#-------------------------------------------------------------------------
# Компіляція скрипта
#-------------------------------------------------------------------------

import os as os
import py_compile

print("-" * 50 + "\nКомпіляція скрипта\n" + "-" * 50)

v_py = ".\\graphic.py"
v_compiled = ".\\graphic.pyc"

v_files = (
"..\\LIBRARY\\library.py",
".\\graphic_exit.py",
".\\graphic_export.py",
".\\graphic_create.py",
".\\graphic_info.py",
".\\graphic_main.py"
)

with open(v_py, "w", encoding = "utf-8") as h:
 for i in v_files:
  with open(i, "r", encoding = "utf-8") as h_i:
   print("Додавання:", i)
   h.writelines(h_i.readlines())

py_compile.compile(v_py, v_compiled)

print("\nНатисність будь-яку клавішу для продовження...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")

Компилировать в .pyc необязательно, но я в тестовом режиме запускаю скрипт именно как .pyc. Если такое приложение работает автономно при запуске в ОС, а не из оболочки разработки, значит и сборка, сделанная с помощью pyinstaller, будет работать.

→ Ссылка
Автор решения: Alexander

Благодарю всех за предложенные варианты и советы. Нашел наиболее простой выход: скомпилировать "my_file2.py" в .exe формат и из файла "main.py" в subprocess.Popen() запускать уже "my_file2.exe":

subprocess.Popen(path+"my_file2.exe")

После этого отдельно компилировался уже сам "main.py"

Переписывание подThreading и multiprocessing вызвало дополнительные сложности и ошибки.

→ Ссылка