Jak przekonwertować plik .py na .exe dla języka Python?

126

Próbuję przekonwertować dość prosty program w Pythonie na plik wykonywalny i nie mogłem znaleźć tego, czego szukałem, więc mam kilka pytań (używam Pythona 3.6):

Sposoby na to, które do tej pory odkryłem, są następujące

  1. pobieranie starej wersji Pythona i używanie pyinstaller/py2exe
  2. skonfigurowanie środowiska wirtualnego w Pythonie 3.6, które pozwoli mi zrobić 1.
  3. pobranie konwertera Pythona na C ++ i używanie go.

Oto, czego próbowałem / jakie problemy napotkałem.

  • Zainstalowałem pyinstallerprzed wymaganym pobraniem (pypi-coś), więc nie zadziałało. Po pobraniu wymaganego pliku pyinstallernadal go nie rozpoznaje.
  • Jeśli konfiguruję virtualenv w Pythonie 2.7, czy rzeczywiście muszę mieć zainstalowany Python 2.7?
  • podobnie, jedyne konwertery z Pythona na C ++, które widzę, działają tylko do wersji Python 3.5 - czy muszę pobrać i używać tej wersji, jeśli próbuję to zrobić?
user7396807
źródło
4
Nie jestem pewien, dlaczego jest to odrzucane (być może dlatego, że rekomendacje narzędzi są poza tematem dla SO), ale to pytanie będzie przydatne dla innych w przyszłości. Podobne poprzednie pytania nie zostały oznaczone offtopic, np stackoverflow.com/questions/2136837/...
Chris_Rands

Odpowiedzi:

127

Kroki konwersji .py na .exe w Pythonie 3.6

  1. Zainstaluj Python 3.6 .
  2. Zainstaluj cx_Freeze (otwórz wiersz poleceń i wpisz pip install cx_Freeze.
  3. Zainstaluj idna (otwórz wiersz poleceń i wpisz pip install idna.
  4. Napisz .pyprogram o nazwie myfirstprog.py.
  5. Utwórz nowy plik w języku Python o nazwie setup.pyw bieżącym katalogu skryptu.
  6. W setup.pypliku skopiuj poniższy kod i zapisz go.
  7. Przy wciśniętym klawiszu Shift kliknij prawym przyciskiem myszy ten sam katalog, aby móc otworzyć okno wiersza polecenia.
  8. W monicie wpisz python setup.py build
  9. Jeśli Twój skrypt nie zawiera błędów, nie będzie problemu z utworzeniem aplikacji.
  10. Sprawdź nowo utworzony folder build. Zawiera inny folder. W tym folderze możesz znaleźć swoją aplikację. Uruchom. Uszczęśliw się.

Zobacz oryginalny skrypt na moim blogu .

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

EDYTOWAĆ:

  • upewnij się, że zamiast myfirstprog.pyumieszczać .pynazwę pliku rozszerzenia utworzoną w kroku 4 ;
  • należy uwzględnić każdą importpaczkę w ed .pydo packageslisty (np packages = ["idna", "os","sys"])
  • any name, any number, any descriptionw setup.pypliku nie powinien pozostać bez zmian, należy go odpowiednio zmienić (np name = "<first_ever>", version = "0.11", description = '')
  • te importpakiety ed musi być zainstalowany przed rozpoczęciem krok 8 .
Maria Irudaya Regilan J.
źródło
10
Czy istnieje sposób, aby był to „samodzielny” plik wykonywalny? Jeśli postąpię tak, jak radzisz w swoim artykule, otrzymam folder exe.win.32-3.6. który jest pełen pomocnych plików i katalogów (takich jak „kolekcje /”, „e-mail” itp.). Okropnie dużo jak na prosty wydruk („cześć”). Chciałbym stworzyć jeden, pojedynczy plik wykonywalny, który będzie działał na innym komputerze w takiej postaci, w jakiej jest, bez potrzeby innych plików. Czy jest do tego opcja kompilacji?
FanaticD
2
@FanaticD Python nie jest najlepszym rozwiązaniem. Cython (koszmar pracy) lub Nuitka to najlepszy wybór. Ale przekonanie tych do pracy jest osiągnięciem samym w sobie.
Tetora
Czy to zadziała w Pythonie 3.5.3? (Ostatnia stabilna wersja Debiana 9 Stretch).
Gerard
Jak zaimportować from sklearn.externals import joblib? jak wspomniano w edycji, krok 2.
Jack
77

Python 3.6 jest obsługiwany przez PyInstaller.

Otwórz okno cmd w folderze Pythona (otwórz okno poleceń i użyj cdlub, przytrzymując klawisz Shift, kliknij je prawym przyciskiem myszy w Eksploratorze Windows i wybierz „Otwórz tutaj okno poleceń”). Następnie po prostu wejdź

pip install pyinstaller

I to wszystko.

Najprostszym sposobem korzystania z niego jest wpisanie w wierszu polecenia

pyinstaller file_name.py

Aby uzyskać więcej informacji o tym, jak go używać, spójrz na to pytanie .

Rodrigo Nascimento
źródło
4
właśnie przetestowany z Pythonem 3.7.0. Jednak wiele ostrzeżeń, ale skompilowane pomyślnie i uruchomione w
systemie
2
Skompilowałem program z Pythonem 3.5.0 i bez ostrzeżeń ani błędów, i działa zgodnie z oczekiwaniami
Menotdan
Czy ktoś wie, co ma znaczenie w Pyinstaller? Czy plik exe w systemie Windows 10 będzie działał w systemie Windows 8? czy też wersja Windows 10 32-bitowa będzie działać w 64-bitowych systemach Windows 10?
Derik81
27

Jest to projekt open source o nazwie auto-py-to-exe na GitHub . W rzeczywistości używa również PyInstaller wewnętrznie, ale ponieważ ma prosty interfejs GUI, który kontroluje PyInstaller, może być wygodną alternatywą. W przeciwieństwie do innych rozwiązań może również wyprowadzić samodzielny plik. Udostępniają również wideo pokazujący, jak to skonfigurować.

GUI:

Auto Py do Exe

Wynik:

Wynik

Gadanina
źródło
2
Powinieneś był wspomnieć, że wymaga MVC ++. błąd: wymagany jest Microsoft Visual C ++ 14.0.
SKR
3
Nie znajduję w tym żadnej wartości, ponieważ jest zbudowany na pyinstaller i jeśli pojawi się błąd w pyinstaller, będziesz go mieć również tutaj!
CV_passionate
9

Nie mogę powiedzieć, co jest najlepsze, ale narzędziem, którego używałem z powodzeniem w przeszłości, było cx_Freeze . Niedawno zaktualizowali (7 stycznia 2017) do wersji 5.0.1 i obsługuje Python 3.6.

Oto pypi https://pypi.python.org/pypi/cx_Freeze

Z dokumentacji wynika, że ​​w zależności od potrzeb można to zrobić na więcej niż jeden sposób. http://cx-freeze.readthedocs.io/en/latest/overview.html

Jeszcze tego nie wypróbowałem, więc wskażę post, w którym omówiono prosty sposób zrobienia tego. Jednak niektóre rzeczy mogły się zmienić lub nie.

Jak używać cx_freeze?

Gerschel
źródło
11
Warto wspomnieć, że cxFreeze nie obsługuje plików wykonywalnych jednoplikowych.
Eddie Hart
7

Używałem Nuitka i PyInstaller z moim pakietem PySimpleGUI.

Nuitka Wystąpiły problemy podczas kompilacji programu tkinter z programem Nuikta. Jeden z współautorów projektu opracował skrypt, który naprawił problem.

Jeśli nie używasz tkintera, to może „po prostu działać” dla Ciebie. Jeśli używasz tkintera, powiedz to, a postaram się, aby skrypt i instrukcje zostały opublikowane.

PyInstaller Używam 3.6 i PyInstaller działa świetnie! Polecenie, którego używam do tworzenia mojego pliku exe, to:

pyinstaller -wF mojplik.py

-WF utworzy pojedynczy plik EXE. Ponieważ wszystkie moje programy mają GUI i nie chcę wyświetlać okna poleceń, opcja -w ukryje okno poleceń.

Jest to tak blisko uzyskania do uruchomienia czegoś, co wygląda jak program Winforms, który został napisany w Pythonie.

[Aktualizacja 20 lipca 2019 r.]

Istnieje rozwiązanie oparte na graficznym interfejsie użytkownika PySimpleGUI, które wykorzystuje PyInstaller. Używa PySimpleGUI. Nazywa się pysimplegui-exemaker i można go zainstalować za pomocą pip.

pip install PySimpleGUI-exemaker

Aby go uruchomić po zainstalowaniu:

python -m pysimplegui-exemaker.pysimplegui-exemaker

MikeyB
źródło
5

Teraz możesz go przekonwertować za pomocą PyInstaller. Pracuję nawet z Pythonem 3.

Kroki:

  1. Uruchom swój komputer
  2. Otwórz wiersz polecenia
  3. Wpisz polecenie pip install pyinstaller
  4. Po zainstalowaniu użyj polecenia „cd”, aby przejść do katalogu roboczego.
  5. Uruchom polecenie pyinstall <filename>
Tejas Joshi
źródło
Dlaczego ludzie to odrzucają? Po prostu zamieszczam tę odpowiedź ze względu na pomoc.
Tejas Joshi
3
ponieważ nie działa na Pythonie 3.6, którego używa OP, który specjalnie napisał.
uri
Pyinstaller powinien teraz działać. Jeśli nie, to powiedz mi w komentarzach
Tejas Joshi