Idealnie by było jakby się dało tak zrobić że ktoś robi
apt-get install riddle-crlf
Co prawda nie apt-get
ale łatwo da się z dpkg
. Załóżmy że twój skrypt to mycli
. Potrzebujesz plik control
oraz ewentualnie inne pliki, np. manual mycli.1
, etc. Oto struktura katalogów:
riddle-tools_1.0.0_any
├── DEBIAN
│ └── control
└── usr
└── local
├── bin
│ └── mycli
└── share
└── man
└── man1
└── mycli.1
zawartość control
mogłaby wyglądać np. tak:
Package: riddle-tools
Version: 1.0.0
Section: custom
Depends: python3:any
Architecture: all
Essential: no
Maintainer: example <example@example.com>
Homepage: https://example.com
Description: my fancy cli
Siala baba mak
nie wiedziala jak
Teraz wystarczy uruchomić polecenie dpkg-deb --build riddle-tools_1.0.0_any
i to powinno stworzyć plik riddle-tools_1.0.0_any.deb
,
który możesz zainstalować poleceniem sudo dpkg -i riddle-tools_1.0.0_any.deb
a odinstalować sudo dpkg -r riddle-tools
Zaleta *.deb
w porównaniu do wheel
instalowanej poleceniem pip
jest taka, że na linuksie nie potrzebujesz paczki python3-pip
, która to z kolei instaluje
build-essential
(czyli gcc
, make
, libc6-dev
). Do instalowania w budowanym kontenerze w sam raz.
Poza tym ja chciałem żeby użytkownicy windowsa którzy nie mają zainstalowanego pythona tez mogli to łatwo ściągnąć.
Można użyć np. pyinstaller
. Trzeba utworzyć nowe środowisko virtualenv
, pipenv
, etc. Po uaktywnieniu środowiska zainstalować pip install pyinstaller
a następnie tylko niezbędne moduły, żeby nieużywane czasem nie wylądowały w paczce. Wtedy wywołujesz polecenie pyinstaller --onefile myscript.py
, w katalogu dist
powinien zostać wygenerowany jeden wielki plik wykonywalny a w środku cały python wraz ze skryptem i wszystkimi niezbędnymi bibliotekami. Będzie to spore, u mnie zainstalowany moduł pyside2 władował się do exeka i utuczył go do 65MB mimo że mój skrypt go nie używa. Ale prosty skrypt bez dodatkowo instalowanych modułów wyniósł ok 10MB.