Idealnie by było jakby się dało tak zrobić że ktoś robi
Kopiuj
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:
Kopiuj
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:
Kopiuj
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.