Chcę utworzyć pojedynczy plik wykonywalny z mojego projektu w języku Python. Użytkownik powinien mieć możliwość pobrania i uruchomienia go bez konieczności instalowania języka Python. Gdybym tylko rozprowadzał pakiet, mógłbym użyć pip, wheel i PyPI, aby go zbudować i rozprowadzić, ale wymaga to od użytkownika posiadania Pythona i umiejętności instalowania pakietów. Czego mogę użyć do zbudowania samodzielnego pliku wykonywalnego z projektu w języku Python?
python
compilation
exe
packaging
software-distribution
ShadowFlame
źródło
źródło
pdb
) nie masz łatwego dostępu do wykonywanych plików,py2exe
(nie wiem o innych) nie zawiera.py
plików, więc nie zobaczysz linii źródłowych w śladach stosu.Odpowiedzi:
Oto kilka typowych. O ile nie zaznaczono inaczej, wszystkie wymienione poniżej projekty są aktywnie obsługiwane od mojej ostatniej edycji (styczeń 2020 r.).
Dołączyłem również linki do ich odpowiednich stron internetowych, repozytoriów i list PyPi, na wypadek gdybyś chciał sam sprawdzić, jak często są aktualizowane.
Ponadto, o ile nie zaznaczono inaczej, wszystkie programy wymienione poniżej utworzą plik exe specjalnie dla systemu operacyjnego, w którym działa. Na przykład uruchomienie Pyinstaller w systemie Windows spowoduje utworzenie pliku exe systemu Windows, ale uruchomienie Pyinstaller w systemie Linux da plik exe systemu Linux. Jeśli chcesz stworzyć exe dla wielu systemów operacyjnych, będziesz musiał przyjrzeć się użyciu maszyn wirtualnych lub użyć czegoś takiego jak Wine .
Wszystkie poniższe programy działają podobnie - łączą Python i Twój program, skutecznie łącząc je w celu utworzenia pliku wykonywalnego.
PyInstaller:
cx_Freeze:
py2app:
Uwaga: wcześniejsze wersje tego posta zawierały zapisy dotyczące py2exe ( repo ) i bbfreeze ( repo ). Oba projekty zostały usunięte z tej listy: od kilku lat nie odnotowano w nich żadnej aktywności i wydaje się, że nie są one utrzymywane. Zobacz historię zmian starych zapisów.
Oczywiście nie jest to jedyny sposób:
pynsist:
Inne uwagi: Wydaje się, że Pynsist obsługuje łączenie dowolnej dowolnej wersji Pythona z twoją aplikacją. Jednak samo narzędzie wymaga do działania języka Python 3.5+.
Pynsist utworzy instalator Windows dla twojego programu, który bezpośrednio zainstaluje Pythona na komputerze użytkownika, zamiast łączyć go z twoim kodem i tworzyć skróty, które prowadzą do twojego skryptu Pythona. Chociaż ten program tworzy tylko instalatory systemu Windows, wydaje się, że nadal można uruchomić Pynsist na komputerach Mac i Linux.
Nuitka:
cython:
Osobiście wolę używać PyInstaller, ponieważ był on dla mnie najłatwiejszy do uruchomienia, został zaprojektowany tak, aby dobrze współpracował z różnymi popularnymi bibliotekami, takimi jak numpy lub pygame, i ma doskonałą kompatybilność z różnymi wersjami systemów operacyjnych i Pythona.
Jednak z powodzeniem zbudowałem również różne exe przy użyciu cx_Freeze bez większych trudności, więc powinieneś również rozważyć wypróbowanie tego programu.
Nie miałem jeszcze okazji wypróbować na szeroką skalę pynistów, Nuitki czy Cythona, ale wydają się one całkiem ciekawymi i nowatorskimi rozwiązaniami. Jeśli napotkasz problemy podczas korzystania z pierwszej grupy programów, warto wypróbować jeden z tych trzech. Ponieważ działają one zasadniczo inaczej niż programy w stylu Pyinstaller / cx_freeze, mogą odnieść sukces w tych dziwnych skrajnych przypadkach, w których pierwsza grupa zawodzi.
W szczególności uważam, że pynist to dobry sposób na obejście całego problemu dystrybucji kodu w ogóle: komputery Mac i Linux mają już natywną obsługę Pythona, a samo zainstalowanie Pythona w systemie Windows może być naprawdę najczystszym rozwiązaniem. (Wadą jest teraz, że musisz się martwić o kierowanie na wiele wersji Pythona + instalowanie bibliotek).
Nuitka i Cython (z mojego ograniczonego doświadczenia) wydają się działać dość dobrze. Ponownie, nie testowałem ich szczegółowo, więc moja główna obserwacja jest taka, że wydaje się, że tworzenie exe trwa znacznie dłużej niż programy w stylu "zamrażania".
Biorąc to wszystko pod uwagę, konwersja programu w Pythonie na plik wykonywalny niekoniecznie jest jedynym sposobem dystrybucji kodu. Aby dowiedzieć się więcej o innych dostępnych opcjach, skorzystaj z poniższych łączy:
źródło
msvcrxx.dll
, gdziexx
jest numer wersji), aby uruchomić exe (lub poprosić użytkowników, aby zainstalować go przez siebie). Jest to konieczne, ponieważ Python jest zbudowany w systemie Windows przy użyciu programu Visual Studio.pyinstaller jest nadal w fazie rozwoju. Najnowsze zmiany możesz zobaczyć na GitHub.
Obsługuje wszystkie trzy główne platformy:
i obsługuje Python w wersjach 2.6 i 2.7. Nie obsługuje Pythona 3, ale istnieje eksperymentalna gałąź Python 3 .
Aktualizacja
Od wersji 3.2.1 obsługuje Python 2.7, 3.3-3.5
źródło
Lepsze wykorzystanie,
pip install auto-py-to-exe
które zapewnia piękny interfejs użytkownika ze wszystkimi opcjami wymaganymi do utworzenia pliku wykonywalnego.Po zainstalowaniu wystarczy wpisać
auto-py-to-exe
terminal lub wiersz poleceń.źródło