Jak sprawić, by skrypt w Pythonie był wykonywalny bez żadnych zależności?

Buduję aplikację Pythona i nie chcę zmuszać klientów do instalowania Pythona i modułów. Chcę również, aby moja aplikacja była zamknięta.

Czy jest sposób na kompilowanie skryptów Pythona do samodzielnych plików wykonywalnych?

Author: ThinkingStiff, 2011-03-28

16 answers

 167
Author: neurino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-30 20:32:01

Możesz użyć PyInstaller do pakowania programów Pythona jako samodzielnych plików wykonywalnych. Działa na systemach Windows, Linux i Mac.

PyInstaller Quickstart

Zainstaluj PyInstaller z PyPI:

pip install pyinstaller

Przejdź do katalogu programu i uruchom:

pyinstaller yourprogram.py

Spowoduje to wygenerowanie pakietu w podkatalogu o nazwie dist.

Aby uzyskać bardziej szczegółowe informacje, zobacz Podręcznik .

 146
Author: Rumple Stiltskin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-27 19:09:04

Możesz chcieć zbadać Nuitka . Pobiera kod źródłowy Pythona i konwertuje go do wywołań C++ API. Następnie kompiluje się do pliku binarnego wykonywalnego (ELF na Linuksie). Istnieje już od kilku lat i obsługuje szeroką gamę wersji Pythona.

Prawdopodobnie otrzymasz również poprawę wydajności, jeśli go użyjesz. Polecam.

 64
Author: cdarke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-09 07:11:55

A trzecią opcją jest cx_Freeze, który jest wieloplatformowy.

 21
Author: Katriel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-28 11:43:57

Chciałbym skompilować kilka przydatnych informacji na temat tworzenia samodzielnych plików w systemie Windows przy użyciu Pythona 2.7.

Użyłem py2exe i działa, ale miałem pewne problemy.

Ten ostatni powód sprawił, że próbowałem PyInstaller http://www.pyinstaller.org /.

Moim zdaniem jest o wiele lepiej bo:

    Jest łatwiejszy w użyciu.

Proponuję tworzenie .plik bat z następującymi liniami na przykład (pyinstaller.exe musi być w ścieżce Windows):

pyinstaller.exe --onefile MyCode.py

Więc, Myślę, że przynajmniej dla Pythona 2.7 lepszą i prostszą opcją jest PyInstaller.

 19
Author: Diego,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-11 20:01:14

Tak, możliwe jest kompilowanie skryptów Pythona do samodzielnego pliku wykonywalnego.

PyInstaller może być używany do konwersji programów Pythona na samodzielne pliki wykonywalne, Pod Windows, Linux, Mac OS X, FreeBSD, Solaris i AIX. Jest to jeden z zalecanych konwerterów.

Py2exe konwertuje Skrypty Pythona na wykonywalne tylko na platformie Windows.

Cython jest statycznym kompilatorem dla obu język programowania Python i rozszerzony język programowania Cython.

 18
Author: fury.slay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-17 07:39:42

Możesz polubić py2exe . znajdziesz tam również informacje na temat robienia tego na Linuksie

 17
Author: user237419,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-28 11:06:41

Użyj py2exe.... użyj poniższych plików konfiguracyjnych:

 from distutils.core import setup
 import py2exe

 from distutils.filelist import findall
 import matplotlib

 setup(
       console=['PlotMemInfo.py'],

       options={
                'py2exe': {
                'packages' : ['matplotlib'],
            'dll_excludes': ['libgdk-win32-2.0-0.dll',
                                 'libgobject-2.0-0.dll',
                 'libgdk_pixbuf-2.0-0.dll']
                          }
                },
       data_files = matplotlib.get_py2exe_datafiles()
     )
 13
Author: Anand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-09 06:15:46

Polecam również pyinstaller dla lepszej kompatybilności wstecznej, takiej jak python 2.3 - 2.7.
dla py2exe , musisz mieć Pythona 2.6

 9
Author: yantaq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-24 00:55:24

Dla skryptów Pythona 3.2 jedynym wyborem jest Cxfreeze. Zbuduj go ze źródeł, inaczej nie zadziała.

Dla Pythona 2.x proponuję pyinstaller, ponieważ może on spakować program Pythona w jednym pliku wykonywalnym, w przeciwieństwie do CxFreeze, który wyprowadza również biblioteki.

 8
Author: ravi.chunduru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-28 20:14:54

Py2exe utworzy plik exe, który chcesz, ale musisz mieć tę samą wersję MSVCR90.dll na komputerze masz zamiar użyć nowego exe. Zobacz http://www.py2exe.org/index.cgi/Tutorial aby uzyskać więcej informacji.

 6
Author: Belial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-29 06:21:34

Możesz znaleźć listę narzędzi dystrybucyjnych wymienionych @ https://wiki.python.org/moin/DistributionUtilities .

Używam bbfreeze i działa bardzo dobrze(jeszcze nie ma wsparcia dla Pythona 3).

 5
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-08 13:25:27

Nie do końca jest to opakowanie kodu Pythona, ale teraz jest też grumpy od google, który przekazuje kod, aby przejść. Nie obsługuje API Pythona C, więc może nie działać dla wszystkich projektów.

 4
Author: freeformz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-18 18:34:23

Użyj Cythona do konwersji do c, kompilacji i połączenia z gcc. Innym może być, aby podstawowe funkcje w c (te, które chcesz zrobić trudne do odwrócenia), skompilować je i użyć Python boost importować skompilowany kod (Plus masz znacznie szybsze wykonanie kodu). następnie użyj dowolnego narzędzia wymienionego do dystrybucji.

 2
Author: F.Moure,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 04:50:02

Powiedziano mi, że PyRun, https://www.egenix.com/products/python/PyRun / , jest również opcją.

 1
Author: Kraig Brockschmidt - MSFT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-28 17:48:13

Za pomocą pyinstaller, znalazłem lepszą metodę za pomocą skrótu do .exe zamiast robić --onefile. W każdym razie prawdopodobnie są jakieś pliki danych, a jeśli używasz aplikacji opartej na witrynie, to twój program zależy również od plików html, js, css. Nie ma sensu przenosić tych wszystkich plików gdzieś.. zamiast tego, co zrobić, jeśli przesuniemy ścieżkę roboczą w górę.

Utwórz skrót do exe, przenieś go u góry i ustaw ścieżki docelowe i startowe zgodnie z podanymi, aby ścieżki względne trafiały do folderu dist\: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" Can zmiana nazwy skrótu na cokolwiek, więc zmiana nazwy na "GTFS-Manager"
Teraz po dwukrotnym kliknięciu skrótu, to tak, jakbym uruchomił plik w Pythonie! Uznałem to podejście za lepsze od --onefile jako:

  1. W przypadku onefile jest problem zbrak dll dla systemu operacyjnego win7, który wymaga wcześniejszej instalacji itp. Ziew. Przy zwykłej kompilacji z wieloma plikami nie ma takich problemów.
  2. wszystkie pliki, których używa mój skrypt w Pythonie (jest to serwer WWW tornado i potrzebuje całego strona warta plików!) nie trzeba nigdzie przenosić: po prostu tworzę skrót na górze.
  3. mogę użyć dokładnie tego samego folderu w ubuntu (uruchom python3 myfile.py) i windows (kliknij dwukrotnie SKRÓT).
  4. Nie muszę się przejmować zbyt skomplikowanym hakowaniem .plik spec do dołączania plików danych itp.

OH, pamiętaj, aby usunąć folder budowania po zbudowaniu, zapisze na rozmiar.

 1
Author: Nikhil VJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-24 21:05:45