@ganstar565

Как с linux скомпилировать файл с расширением .py в exe под windows?

Написал программу с linux при попытке скомпилировать через pyinstaller или auto-py-to-exe - либо выдаёт ошибку, либо на выходе файл без расширения .exe, либо просто не работает.
Была мысль, что программа в принципе не будет работать на windows, решил для теста написать что-то элементарное, что точно должно запустится по типу
spoiler
import datetime
import webbrowser
from playsound import playsound
from gtts import gTTS
import os


def were_time():
    now = datetime.datetime.now()
    current_time = str(now.strftime("%H %M"))      
    tts = gTTS(current_time, lang="ru")
    tts.save("tmp.mp3")
    playsound("tmp.mp3")

def open_browser(): 
    os.startfile(r"C:\Users\ganstar565\AppData\Local\Programs\Opera GX\launche.exe")
    
def open_vk():
    webbrowser.open_new("https://vk.com/im")


q = int(input("1 - узнать время, 2 - открыть браузер. 3 - открыть вк: "))

if q == 1: were_time()
if q ==2:open_browser()
if q ==3: open_vk()

Но всё таки проблема не в моей программе, а в том что я не умею провильно компилировать.
Я бы мог весь проект перенести на винду и уже с неё скомпилировать, но чтобы скомпилировать с винды нужно засорить её кучей мусора и virtualenv здесь не поможет, надо докачать Microsoft C++ Build Tools, на который места у меня полагаю не хватит.
Есть какой-то способ получить exe с linux и чтобы он работал на windows?
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
То, что вы хотите сделать называется "кросс компиляция". Да, код для питона можно скомпилировать в формат PE (exe, для винды) из под линукса: https://stackoverflow.com/questions/2950971/packag... - но там все равно используется эмулятор wine и по факту компиляцию осуществляет все равно виндовый исполняемый код. Если хочется без wine - то можно самому ручками написать свой компилятор или поискать еще какие альтернативные методы. Можно запустить виртуалку с виндой и в ней делать сборку. Но все же, лучше таки собирать исполняемые файлы для целевой платформы непосредственно на целевой платформе - нетрадиционного секса значительно меньше.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
ElonMask2
@ElonMask2
Autor of Tesla Machini and SpaxeX
Привет!
начнем с того что питон не компилируемый язык, а интерпретируемый
для исполнения ему нужен интерпретатор
упаковщики в exe зачастую твой локально установленный интерпретатор сжимают и ложат его рядом с самим питон кодом чтобы когда нужно было его запустить, запустился сначала интерпретатор а потом сам питон код

не уверен что для этого нужна установка  MSVC, скорее всего не нужна если ты не собираешься компилировать интерпретатор питон из сурсов

не знаю есть ли проекты которые умеют упаковывать не системный питон и заниматся кросс-системной упаковкой
но в теории это возможно

вообще питон не для exe создавался, распространяй свою программу через git/pip и пусть конечный юзер на свой питон сам ее грузить

пока
Ответ написан
ValdikSS
@ValdikSS
Установите Python в Wine, установите также в Wine pyinstaller, скомпилируйте им.
Вот пример: https://github.com/ValdikSS/tor-relay-scanner/blob...

Последняя версия Python, работающая в Windows 7 — 3.8.10.
Ответ написан
Комментировать
@Bwana
Посмотрите в сторону mingw. Эта штука позволяет под линуксом собирать программы для виндовс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы