Myślałem, że słyszałem, że py2exe był w stanie to zrobić, ale nigdy tego nie rozgryzłem. Czy ktoś pomyślnie to zrobił? Czy mogę zobaczyć twój plik setup.py i jakich opcji wiersza poleceń użyłeś?
Zasadniczo myślę o tym, że daje mi pojedynczy plik wykonywalny, który robi coś takiego, jak rozpakowuje się do może / temp i działa.
Odpowiedzi:
PyInstaller utworzy pojedynczy plik .exe bez żadnych zależności; skorzystaj z
--onefile
opcji. Robi to poprzez pakowanie wszystkich potrzebnych bibliotek współdzielonych do pliku wykonywalnego i rozpakowywanie ich przed uruchomieniem, tak jak to opisujesz (EDYCJA: py2exe również ma tę funkcję, zobacz odpowiedź Minty )Używam wersji PyInstaller z svn, ponieważ najnowsza wersja (1.3) jest nieco przestarzała. Działa naprawdę dobrze w przypadku aplikacji, która zależy od PyQt, PyQwt, numpy, scipy i kilku innych.
źródło
Sposobem na zrobienie tego za pomocą py2exe jest użycie opcji bundle_files w pliku setup.py. W przypadku pojedynczego pliku należy ustawić wartość
bundle_files
1,compressed
True i ustawić opcję zipfile na None. W ten sposób tworzy jeden skompresowany plik do łatwej dystrybucji.Oto pełniejszy opis opcji bundle_file cytowanej bezpośrednio z witryny py2exe *
Oto przykład setup.py:
źródło
windows = [{'script': "single.py"}]
zeconsole = ['single.py']
tak dwukrotne kliknięcie na plik otworzy się w oknie CMD w Windows.Jak wspomniano w innym plakacie, py2exe, wygeneruje plik wykonywalny + kilka bibliotek do załadowania. Możesz także dodać pewne dane do swojego programu.
Następnym krokiem jest użycie instalatora, aby spakować to wszystko w jeden łatwy w użyciu program, który można zainstalować / usunąć.
Z InnoSetup ( http://www.jrsoftware.org/isinfo.php ) korzystam z zachwytem od kilku lat i do programów komercyjnych, więc serdecznie go polecam.
źródło
Udało mi się utworzyć pojedynczy plik exe ze wszystkimi zasobami osadzonymi w exe. Buduję na oknach. więc to wyjaśni niektóre z wywołań os.system, których używam.
Najpierw spróbowałem przekonwertować wszystkie moje obrazy na bitmaty, a następnie wszystkie moje pliki danych na ciągi tekstowe. ale to spowodowało, że końcowy exe był bardzo duży.
Po tygodniowym wyszukiwaniu w Google zorientowałem się, jak dostosować skrypt py2exe do moich potrzeb.
tutaj jest link do łatki na sourceforge, które przesłałem, proszę o komentarze, abyśmy mogli je dołączyć do następnej dystrybucji.
http://sourceforge.net/tracker/index.php?func=detail&aid=3334760&group_id=15583&atid=315583
to wyjaśnia wszystkie wprowadzone zmiany, po prostu dodałem nową opcję do linii ustawień. tutaj jest mój setup.py.
Postaram się to skomentować najlepiej jak potrafię. Pamiętaj, że mój plik setup.py jest skomplikowany, ponieważ mam dostęp do obrazów według nazwy pliku. więc muszę przechowywać listę, aby je śledzić.
pochodzi z wygaszacza ekranu, który chciałem zrobić.
Używam exec do generowania mojej konfiguracji w czasie wykonywania, łatwiej jest wycinać i wklejać w ten sposób.
awaria
script = py script Chcę przejść do exe
icon_resources = ikona pliku exe
file_resources = pliki, które chcę osadzić w exe
other_resources = ciąg do osadzenia w exe, w tym przypadku lista plików.
options = py2exe opcje tworzenia wszystkiego w jednym pliku exe
bitmap_strings = lista plików do dołączenia
Pamiętaj, że file_resources nie jest prawidłową opcją, dopóki nie zmodyfikujesz pliku py2exe.py, jak opisano w powyższym linku.
Gdy pierwszy raz próbowałem wysłać kod na tej stronie, jeśli się pomylę, nie pal mnie.
ok, to wszystko dla setup.py teraz magia potrzebowała dostępu do obrazów. Opracowałem tę aplikację bez uwzględnienia py2exe, a następnie dodałem ją później. więc zobaczysz dostęp dla obu sytuacji. jeśli nie można znaleźć folderu obrazów, próbuje pobrać obrazy z zasobów exe. kod wyjaśni to. jest to część mojej klasy sprite'a i używa directx. ale możesz użyć dowolnego interfejsu API lub po prostu uzyskać dostęp do surowych danych. nie ma znaczenia.
Wszelkie pytania nie wahały się zadawać.
źródło
\'file_resources': [('txt2.txt')]
, pojawia się błąd (plik, który chcę embledować w moim .exe ma nazwę txt2 i jest to plik .txt )Powinieneś utworzyć instalator, jak wspomniano wcześniej. Mimo że możliwe jest również, aby py2exe pakował wszystko w jeden plik wykonywalny, ustawiając opcję bundle_files na 1 i argument słowa kluczowego zipfile na None, nie polecam tego dla aplikacji PyGTK.
Dzieje się tak, ponieważ GTK + próbuje załadować swoje pliki danych (lokalne, motywy itp.) Z katalogu, z którego zostało załadowane. Więc musisz się upewnić, że katalog twojego pliku wykonywalnego zawiera również biblioteki używane przez GTK + oraz katalogi lib, share itp. Z twojej instalacji GTK +. W przeciwnym razie wystąpią problemy z uruchomieniem aplikacji na komputerze, na którym GTK + nie jest zainstalowany w całym systemie.
Aby uzyskać więcej informacji, przeczytaj mój przewodnik po py2exe dla aplikacji PyGTK . Wyjaśnia również, jak spakować wszystko, oprócz GTK +.
źródło
Powiedziano mi, że bbfreeze utworzy pojedynczy plik .EXE i jest nowszy niż py2exe.
źródło
spróbuj c_x freeze , może stworzyć dobry samodzielny program
źródło
Niedawno użyłem py2exe do stworzenia pliku wykonywalnego do późniejszego przeglądu w celu wysłania recenzji do ReviewBoard.
To był plik setup.py, którego użyłem
Utworzył katalog zawierający plik exe i potrzebne biblioteki. Nie sądzę, aby można było użyć py2exe, aby uzyskać tylko jeden plik .exe. Jeśli potrzebujesz tego, musisz najpierw użyć py2exe, a następnie użyć jakiejś formy instalatora, aby utworzyć ostateczny plik wykonywalny.
Jedną rzeczą, na którą należy zwrócić uwagę, jest to, że wszystkie pliki jaj, których używasz w swojej aplikacji, muszą zostać rozpakowane, w przeciwnym razie py2exe nie może ich zawierać. Jest to omówione w dokumentacji py2exe.
źródło
Nie, to nie daje ci jednego pliku wykonywalnego w tym sensie, że masz później tylko jeden plik - ale masz katalog, który zawiera wszystko, czego potrzebujesz do uruchomienia programu, w tym plik exe.
Właśnie napisałem ten setup.py dzisiaj. Wystarczy wywołać
python setup.py py2exe
.źródło