Buduję aplikację Python i nie chcę zmuszać moich klientów do instalowania Pythona i modułów.
Czy jest więc sposób na skompilowanie skryptu Python, aby był samodzielnym plikiem wykonywalnym?
python
executable
Jeff
źródło
źródło
Odpowiedzi:
Możesz użyć py2exe jako już odebranego i użyć cytonu do konwersji
.py
plików kluczy, plików.pyc
skompilowanych w języku C, takich jak.dll
w systemie Windows i.so
Linux, znacznie trudniej przywrócić pliki zwykłe.pyo
i.pyc
pliki (a także zwiększyć wydajność!)źródło
Za pomocą PyInstaller można spakować programy w języku Python jako samodzielne pliki wykonywalne. Działa w systemach Windows, Linux i Mac.
źródło
Możesz zbadać Nuitkę . Pobiera kod źródłowy Pythona i konwertuje go na wywołania API C ++. Następnie kompiluje się w wykonywalny plik binarny (ELF w systemie Linux). Istnieje już od kilku lat i obsługuje szeroką gamę wersji Pythona.
Prawdopodobnie uzyskasz także poprawę wydajności, jeśli go użyjesz. Zalecana.
źródło
Chciałbym skompilować przydatne informacje na temat tworzenia samodzielnych plików w systemie Windows za pomocą Pythona 2.7.
Użyłem py2exe i działa, ale miałem pewne problemy.
Pokazał pewne problemy z tworzeniem pojedynczych plików w systemie Windows w 64-bitowych bitach: Używanie plików bundle_files = 1 z py2exe nie działa ;
Aby to działało, konieczne jest utworzenie pliku setup.py. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
Mam problemy z zależnościami, które musisz rozwiązać, importując pakiety do pliku instalacyjnego;
Nie udało mi się sprawić, by działał razem z PyQt ..
Ten ostatni powód skłonił mnie do wypróbowania PyInstaller http://www.pyinstaller.org/ .
Moim zdaniem jest znacznie lepiej, ponieważ:
Sugeruję na przykład utworzenie pliku .bat z następującymi wierszami (pyinstaller.exe musi znajdować się w ścieżce Windows):
Możesz utworzyć pojedynczy plik, wśród innych opcji ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
Miałem tylko jeden problem z PyInstallerem i pakietem wieloprocesowym, który został rozwiązany przy użyciu tego przepisu: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Myślę więc, że przynajmniej dla Pythona 2.7 lepszą i prostszą opcją jest PyInstaller.
źródło
--onefile
Flaga nie pomoże Ci zrobić to przenośny na Windows, ponieważ nadal wykonywalny chce połączenia zapi-ms-win-crt-runtime-l1-1-0.dll
biblioteki (lub / i innych), które muszą być zainstalowane przezvcredist
pakiet. Tak więc zależność nadal istnieje i musi zostać zainstalowana przed uruchomieniem.Tak, możliwe jest skompilowanie skryptów Python w samodzielny plik wykonywalny.
PyInstaller może służyć do konwertowania programów Python na samodzielne pliki wykonywalne w systemach Windows , Linux , Mac OS X , FreeBSD , Solaris i AIX . Jest to jeden z zalecanych konwerterów.
py2exe konwertuje skrypty Pythona na pliki wykonywalne tylko na platformie Windows.
Cython jest statycznym kompilatorem zarówno języka programowania Python, jak i rozszerzonego języka programowania Cython.
źródło
Trzecia opcja to
cx_Freeze
wieloplatformowość.źródło
cx_Freeze
od końca 2017 r. Nie ma żadnych wymienionych wersji na pypi. Czy ten projekt został porzucony?może ci się podobać py2exe . znajdziesz tam również informacje o robieniu tego na Linuksie
źródło
Użyj py2exe .... użyj poniższych plików konfiguracji:
źródło
Lubię pyinstaller - szczególnie wariant „okienkowy”:
Stworzy jeden plik * .exe w folderze dist /.
źródło
Polecam również pyinstaller dla lepszej kompatybilności wstecznej, takiej jak python 2.3 - 2.7.
dla py2exe musisz mieć Python 2.6
źródło
W przypadku skryptów Python 3.2 jedynym wyborem jest Cxfreeze. Zbuduj go ze źródeł, inaczej nie będzie działać.
W przypadku python 2.x sugeruję pyinstaller, ponieważ może on spakować program python w jednym pliku wykonywalnym, w przeciwieństwie do CxFreeze, który wypisuje również biblioteki.
źródło
py2exe utworzy żądany plik exe, ale musisz mieć tę samą wersję MSVCR90.dll na komputerze, na którym będziesz używać nowego exe. Aby uzyskać więcej informacji, zobacz http://www.py2exe.org/index.cgi/Tutorial .
źródło
Listę narzędzi do dystrybucji można znaleźć na stronie @ https://wiki.python.org/moin/DistributionUtilities .
Korzystam z bbfreeze i działał bardzo dobrze (jeszcze nie ma wsparcia dla Pythona 3).
źródło
.so
plików lub skopiuje pliki .egg bezpośrednio i wszystkie one będą obecne w jednym katalogu (lub jako pojedynczy plik). Nie wymaga instalacji.Spowoduje to utworzenie samodzielnego pliku EXE w systemie Windows WAŻNA UWAGA: Plik exe zostanie wygenerowany w folderze o nazwie „dist”
możesz zainstalować pyinstaller za pomocą
pip install PyInstaller
źródło
Nie do końca pakiet kodu python, ale teraz jest też zrzędliwy z Google, który transponuje kod do Go. Nie obsługuje interfejsu API w Pythonie, więc może nie działać dla wszystkich projektów.
źródło
Korzystając z pyinstaller, znalazłem lepszą metodę, używając skrótu do .exe, a nie tworzenia
--onefile
. W każdym razie prawdopodobnie są jakieś pliki danych, a jeśli korzystasz z aplikacji opartej na witrynie, twój program zależy również od plików HTML, JS, CSS. Nie ma sensu przenosić tych plików gdzieś… zamiast tego co, jeśli przesuniemy ścieżkę roboczą w górę.Utwórz skrót do pliku exe, przesuń go u góry i ustaw ścieżki docelowe i początkowe, jak określono, aby ścieżki względne były w folderze dist \:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
Można zmienić nazwę skrótu na dowolną, zmieniając nazwę na „GTFS-Manager”Teraz, kiedy podwoję -kliknij skrót, to tak, jakbym uruchomił plik w Pythonie! Znalazłem to podejście lepiej niż to,
--onefile
ponieważ:Och, pamiętaj, aby usunąć folder kompilacji po kompilacji, oszczędza na rozmiarze.
źródło
Użyj Cython, aby przekonwertować na c, skompilować i połączyć z gcc. Innym może być uczynienie podstawowych funkcji c (tymi, które chcesz utrudnić do odwrócenia), skompilowanie ich i użycie Python Boost do zaimportowania skompilowanego kodu (a ponadto masz znacznie szybsze wykonanie kodu). następnie użyj dowolnego narzędzia wymienionego do dystrybucji.
źródło
Powiedziano mi, że PyRun, https://www.egenix.com/products/python/PyRun/ , jest również opcją.
źródło