Czy mogę jakoś "skompilować" skrypt Pythona do pracy na PC bez zainstalowanego Pythona?

Więc mam skrypt Pythona:

myscript.py

Wykonuję to tak:

python D:\myscript.py

Jednak muszę mieć Pythona zainstalowanego i dołączonego do zmiennej środowiskowej PATH, aby to działało.

Czy jest w jakiś sposób możliwe "spakowanie" pliku wykonywalnego Pythona za pomocą skryptu Pythona, aby inni ludzie mogli go uruchomić na swoich komputerach bez Pythona?

Jest ok, jeśli będzie działać tylko w Windows.

EDIT:

Po wypróbowaniu compile.py dostaję ten błąd:

Traceback (most recent call last):
  File "D:\stuff\compile.py", line 4, in <module>
    import py2exe
ImportError: No module named py2exe
Author: Dawid Ferenczy, 2010-11-11

6 answers

Tutaj jest jeden sposób, aby to zrobić(Dla Windows, za pomocą py2exe).

Najpierw zainstaluj py2exe w oknie Windows.

Następnie Utwórz skrypt Pythona o nazwie compile.py, tak:

import sys
from distutils.core import setup
import py2exe

entry_point = sys.argv[1]
sys.argv.pop()
sys.argv.append('py2exe')
sys.argv.append('-q')

opts = {
    'py2exe': {
        'compressed': 1,
        'optimize': 2,
        'bundle_files': 1
    }
}

setup(console=[entry_point], options=opts, zipfile=None)

Aby skompilować skrypt Pythona do pliku wykonywalnego Windows, uruchom ten skrypt z programem jako argumentem:

$ python compile.py myscript.py

Wypluwa binarny plik wykonywalny (EXE) z interpreterem Pythona skompilowanym wewnątrz. Następnie możesz po prostu rozprowadzić ten plik wykonywalny.

 20
Author: Corey Goldberg,
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
2016-06-23 10:11:53

PyInstaller działa dobrze dla mnie, generując dość małe pakiety ze względu na wykorzystanie upx. Jego wykrywanie zależności było w tym czasie lepsze niż py2exe. Wydaje się, że nie ma dużo ostatnio rozwoju i prawdopodobnie nie działa z 3.jednak X.

Źródło w repozytorium jest lepszym punktem wyjścia niż pakiet 1.4.

Zobacz także stronę wiki o pracy z Pythonem 2.6+.

Z listy funkcji:

  • opakowanie Pythona do standardowych plików wykonywalnych, które działają na komputerach bez zainstalowanego Pythona.
  • Multiplatform: działa pod Windows( 32-bit i 64-bit), Linux (32-bit i 64-bit) i Mac OS X (32-bit tylko na razie, zobacz MacOsCompatibility).
  • Multiversion: działa pod dowolną wersją Pythona od 1.5 do 2.7. UWAGA: Jeśli używasz Pythona 2.6+ w systemie Windows, zobacz Python26Win.
  • elastyczny tryb pakowania:
  • pojedynczy katalog: zbuduj katalog zawierający wykonywalny oraz wszystkie zewnętrzne moduły binarne (.dll, .pyd,. so) używany przez program.
  • pojedynczy plik: zbuduj pojedynczy plik wykonywalny, całkowicie niezależny, który działa bez żadnej zewnętrznej zależności.
  • Custom: można zautomatyzować PyInstaller zrobić dowolny tryb pakowania chcesz za pomocą prostego pliku skryptu w Pythonie.
  • jawne Inteligentne Wsparcie dla wielu pakietów 3rd (dla ukrytych importów, zewnętrznych plików danych, itp.), aby współpracowały z Pyinstallerem po wyjęciu z pudełka (patrz obsługiwane opakowania).
  • Pełna obsługa pojedynczego pliku EGG: wymagana .pliki egg są automatycznie sprawdzane pod kątem zależności i wiązane, a wszystkie funkcje specyficzne dla egg są również obsługiwane w czasie wykonywania (punkty wejścia itp.).
  • częściowa obsługa katalogu EGG: wymagana.katalogi egg są automatycznie sprawdzane pod kątem zależności i pakietów, ale funkcje specyficzne dla egg nie będą działać w czasie wykonywania.
  • Automatyczne wsparcie dla bibliotek binarnych używanych przez ctypes (szczegóły w CtypesDependencySupport).
  • Wsparcie dla automatycznego pakowania binarnego za pośrednictwem znanej sprężarki UPX.
  • Opcjonalny tryb konsoli (patrz standardowe wyjście i standardowy błąd podczas pracy).
  • funkcje specyficzne dla systemu Windows:
  • Wsparcie dla plików wykonywalnych podpisujących kod.
  • Pełna automatyczna obsługa CRTs: nie ma potrzeby ręcznej dystrybucji MSVCR*.DLL, instalatory redist, manifesty, lub cokolwiek innego; prawdziwe aplikacje jednego pliku, które działają wszędzie!
  • wybierz ikonę wykonywalną.
  • W pełni konfigurowalna sekcja zasobów wersji i manifestuje się w pliku wykonywalnym.
  • Wsparcie dla budowy serwerów COM.
  • cechy charakterystyczne dla komputerów Mac:
  • wstępne wsparcie dla pakietów (patrz MacOsCompatibility)
 11
Author: Binary Phile,
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
2010-11-12 00:01:41

Chcesz coś w rodzaju py2exe .

 10
Author: unode,
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
2010-11-11 19:21:24

Istnieje wiele rozwiązań takich jak py2exe, cx-freeze lub (tylko dla Mac OS X) py2app.

 9
Author: Michael,
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
2010-11-11 19:22:28

Tutaj jest ich lista.

 5
Author: ʇsәɹoɈ,
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
2010-11-11 19:44:57

Przejdź do menu Notepad++, wtyczki -- > skrypt Pythona -- > Pokaż konsolę. W nowo otwartym oknie konsoli, na dole wpisz..... execfile ("C:/path/to/your/python/file/code.py') #użyj ukośnika do przodu ( / ) zamiast ukośnika do tyłu. Naciśnij return lub kliknij przycisk run.

 0
Author: user8583529,
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-09-09 09:01:30