Moja aplikacja wygląda tak:
main.py okna / __init__.py mainwindow.py ... Model/ __init__.py orders.py ... zasoby/ image1.png logo.jpg ...
Program jest uruchamiany z main.py. Czy istnieje dobry sposób na stworzenie z tego „ostatecznego” wniosku? Myślę o czymś takim jak py2exe / py2app, ale bez kopiowania interpretera / modułów Pythona do aplikacji, w której jest tylko jeden plik wykonywalny.
Rzuciłem okiem na distutils, ale wygląda na to, że instaluje program w katalogu Pythona, co nie jest typowe na platformach innych niż Linux.
W tej chwili po prostu kopiuję cały folder źródłowy na komputer docelowy i tworzę alias do main.pyw
w systemie Windows. Niektóre niedogodności:
- Ikona jest domyślną ikoną języka Python.
- Muszę utworzyć alias ręcznie.
- W moim katalogu źródłowym znajduje się wiele dodatkowych plików, takich jak folder kontroli źródła.
- Muszę zmienić nazwę
main.py
namain.pyw
ręcznie. - Byłoby miło, gdyby na maszynie docelowej były tylko pliki `.pyo *. Nie ma ku temu żadnego powodu, po prostu nie lubię mieć niepotrzebnych plików.
Jak stworzyć ładną automatyczną dystrybucję?
- dla Windowsa? (To jedyna platforma, którą w tej chwili muszę obsługiwać).
- dla Maca?
- dla linuxa?
Odpowiedzi:
Normalnym sposobem dystrybucji aplikacji Pythona jest dystrybucja distutils . Jest przeznaczony zarówno do dystrybucji modułów Pythona typu bibliotecznego, jak i aplikacji w Pythonie, chociaż nie wiem, jak to działa w systemie Windows. W każdym przypadku w systemie Windows musiałbyś zainstalować Pythona osobno, jeśli używasz distutils.
Prawdopodobnie zaleciłbym dystrybucję go z disutils dla Linuksa i Py2exe lub czymś podobnym dla Windows. Na OS X nie wiem. Jeśli jest to aplikacja dla użytkownika końcowego, prawdopodobnie chciałbyś mieć obraz dysku, nie wiem, jak to zrobić. Ale przeczytaj ten post, aby uzyskać więcej informacji na temat wrażeń użytkowników. W przypadku aplikacji stworzonej dla programistów prawdopodobnie nie przeszkadza Ci również instalacja typu distutils na OS X.
źródło
dist
i skopiować do niego wszystkie odpowiednie pliki?Gorąco polecam Pyinstaller , który całkiem bezproblemowo obsługuje wszystkie główne platformy. Podobnie jak py2exe i py2app, tworzy standardowy plik wykonywalny w systemie Windows i pakiet aplikacji w systemie OS X, ale ma również tę zaletę, że wykonuje fantastyczną pracę polegającą na automatycznym rozwiązywaniu typowych zależności i włączaniu ich bez dodatkowych poprawek konfiguracyjnych.
Zauważ również, że jeśli wdrażasz Python 2.6 w systemie Windows, powinieneś zastosować tę poprawkę do łącza Pyinstaller.
Wskazałeś, że nie potrzebujesz instalatora, ale Inno Setup to łatwy w użyciu i szybki w konfiguracji wybór dla platformy Windows.
źródło
Hello world
program zajmie 500 MB miejsca i czas inicjalizacji 3-5 sekund.Fredrik Lundh
squeeze.py
może stworzyć pojedynczy plik, który nie zawiera interpretera Pythona, ale zamiast tego zawiera kod bajtowy. Mając odpowiednie argumenty, możesz dołączyć inne pliki, moduły itp. Do pliku wynikowego. Użyłem go z powodzeniem w jednym projekcie. Powstały program działał na OS X, Linux i Windows bez żadnego problemu!PS : Każda maszyna musi mieć interpreter Pythona, który jest zgodny z kodem bajtowym generowanym przez squeeze.py. W razie potrzeby możesz wygenerować różne wersje kodu bajtowego dla różnych wersji Pythona (po prostu uruchom squeeze.py z odpowiednią wersją Pythona).
źródło
Myślę, że warto również wspomnieć o PEX (biorąc pod uwagę więcej uwagi, jaką otrzymało to pytanie, a mniej samo pytanie). Według własnego opisu :
Natknąłem się na to, kiedy przeczytałem przegląd opakowań dla Pythona . Opublikowali tam to ładne zdjęcie:
Podsumowując: jeśli możesz sobie pozwolić na poleganie na zainstalowaniu Pythona na maszynie docelowej, użyj PEX, aby stworzyć samowystarczalny »plik wykonywalny«, który prawdopodobnie będzie miał mniejszy rozmiar pliku niż na przykład plik wykonywalny utworzony przez PyInstaller.
źródło
Mogę się mylić, ale czy IronPython nie ma wbudowanego kompilatora dla systemu Windows?
http://www.ironpython.net
[EDYTOWAĆ]
Wypróbuj Cx_Freeze, zdecydowanie najlepszy kompilator .py do .exe (plus kilka .dll), jakiego kiedykolwiek używałem.
http://cx-freeze.sourceforge.net/
źródło
Jeśli rozpowszechniasz w systemie Windows, użyj instalatora, aby zainstalować wszystkie potrzebne pliki / interpeter. Rozpowszechnij plik setup.exe. To najlepszy sposób na okna. W przeciwnym razie użytkownicy będą narzekać.
źródło
Najwygodniejszym * międzyplatformowym sposobem dystrybucji aplikacji desktopowych w języku Python jest korzystanie z międzyplatformowego menedżera pakietów Conda. Używa go kilka narzędzi:
* Najwygodniejszy dla programisty. Wystarczająco wygodne dla użytkownika końcowego.
źródło