Mam problem z programem do usuwania puntów podczas dodawania niektórych plików danych, takich jak obrazy i txts do programu Pythona. Na przykład utworzyłem pasek narzędzi z ikonami i przechowuję je w oddzielnym folderze o nazwach obrazów. Mam również kilka plików txt i xml do przechowywania niektórych konfiguracji. Te pliki XML txt są przechowywane w innym folderze o nazwie data_files. Wszystkie pliki py są przechowywane w innym folderze o nazwie source.Kompilacja obrazów i niektórych plików konfiguracyjnych, takich jak pliki txt i xml, za pomocą narzędzia do usuwania puzzli
Kiedy próbuję skompilować ten program python za pomocą programu do usuwania, program piorący może z powodzeniem zbudować cały folder źródłowy, ale folderów obrazów i folderów data_files nie można zbudować. Sprawdziłem dokumentację programu, ale nie mogłem znaleźć żadnego rozwiązania. Zrobiłem wiele wyszukiwań w Google i uznałem, że tylko pomocna jest zasada this, ale jest to bardzo nieadekwatny zasób.
Moje główne pytanie brzmi: Jak mogę skompilować plik exe z osobno zbudowanym folderem, takim jak obrazy i pliki konfiguracyjne za pomocą narzędzia do usuwania piosenek?
Edytuj: Znalazłem rozwiązanie. Podczas tworzenia pliku spec musisz podać parametr a.datas.
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), '/home/vmode/Desktop/derlem2/sources/TextSTAT.py'],
pathex=['/home/pyinstaller'])
a.datas += [("Images/New.gif","/home/vmode/Desktop/derlem2/Images/New.gif","DATA")]
a.datas += [("Images/Open.gif","/home/vmode/Desktop/derlem2/Images/Open.gif","DATA")]
a.datas += [("Images/Column.gif","/home/vmode/Desktop/derlem2/Images/Column.gif","DATA")]
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'TextSTAT'),
debug=False,
strip=False,
upx=True,
console=1)
Powyższy kod specyfikacji jest przeznaczony do mojego projektu. Jak widać w tym kodzie specyfikacji, zamieściłem 3 ikony do zbudowania za pomocą programu Pythona. Podczas generowania programu znajduje się samodzielny plik wykonywalny z osadzonymi ikonami.
Ale co, jeśli mamy tak dużo plików? Załóżmy, że mamy 1000 ikon do użycia w naszym programie. Zapisywanie pliku do pliku spersonalizowanego jest bardzo niewystarczające. Musi istnieć system pętli do odczytywania katalogu plików i dynamicznego dodawania tych plików. Ale nie mogłem znaleźć sposobu na dynamiczne dodawanie tych plików. Nie ma żadnej szansy na dodanie tak wielu plików ręcznie, jak sądzę. Jeśli ktokolwiek wie, proszę udostępnij.
Spróbuj 'cx_freeze'. Próbowałem 'py2exe',' pyinstaller', jakiegoś innego losowego programu, a tylko 'cx_freeze' pracował dla mnie (użyłem PyQt4). Jeśli chcesz zobaczyć mój kod do tworzenia plików binarnych, to jest na GitHub: https://github.com/Blender3D/Bindery/blob/master/tools/binary.py – Blender
Dziękuję za zainteresowanie. Ale cx_freeze tylko kompiluje plik .exe. Chcę zbudować program na wszystkich platformach. Więc muszę użyć programu do usuwania paczek. Ale popracuj trochę. – user1150508
Nie, 'cx_freeze' tworzy pliki binarne również dla systemu Linux. Mac wymaga Py2app. – Blender