Załóżmy, że mam trzy skrypty. Main.py (ma wszystkie importy), 1.py (losowy skrypt), 2.py (losowy skrypt).Importowanie modułów Pythona z wybranej lokalizacji
pyinstaller -F --onedir Main.py (80mb)
pyinstaller -F --onedir 1.py (80mb)
pyinstaller -F --onedir 2.py (80mb)
Spowoduje to utworzenie 3 folderów, a następnie skopiowanie plików 1.exe i 2.exe do folderu głównego ze wszystkimi zależnościami i działa poprawnie.
obecne są dwie kwestie:
Kwestia jest wielkość. Jeden plik redukuje to do 30 MB, jeden folder zatrzymuje go na 80mb
Co ważniejsze, exe nie mogą opuścić tego folderu. Musiałem uciekać się do używania skrótów w Pythonie.
Podążam za this, co podobno stanowi obejście tego problemu.
Moje pytanie brzmi: jak mogę odczytać import z wybranej lokalizacji za pomocą narzędzia do usuwania, aby móc przenieść pliki wykonywalne?
logicznych: kompilacji Main.py użyciu pyinstaller -F –onefile Main.py (15mb).
Utwórz folder na C:\13\
tak exe wygląda jak C:\13\Main.exe
linku wszystkie exe na C:\13
? z --runtime-tmpdir PATH
Mam trudności ze znalezieniem dokumentacji na temat importu z wewnątrz exe, a nawet katalogu "one dir"
. Istnieje wiele sposobów na uzyskanie importu od samego początku, ale nie wiele na temat importu z wybranej lokalizacji, więc mogę uruchomić system exe w dowolnym miejscu. Co więcej, ciężko jest nawet znaleźć moduły w Pyinstallerze, aby je zdekompilować, dodając do tego zamieszania.
Może ...
pyinstaller -F --runtime-tmpdir C:\13 --onefile 2.py
pyinstaller -F --runtime-tmpdir C:\13 --onedir 3.py
Choć dla mnie nie jest tworzony katalog. Jak mogę uzyskać import z wybranej lokalizacji?
Innym możliwym solution:
if getattr(sys, 'frozen', False):
os.path.join(sys._MEIPASS, "C:\aa")
Choć jak widać w image, to powiedzmy, że chcieliśmy pandy istnieje kilka plików do wyboru ...
Dokumentacja z pyinstaller posiada szczegółowy rozdział dotyczący sposobu wielokrotność opakowania exe dzieląc te same zależności: https://pyinstaller.readthedocs.io/en/stable/spec-files.html#multipackage-bundles –
@FlorentB. "Ta funkcja jest zepsuta w wydaniu PyInstaller 3.0" –