# ☸ Zmiany w procesie instalacji - wyjaśnienie Python Wheel

**URL:** <https://ai-speaker.discourse.group/t/zmiany-w-procesie-instalacji-wyjasnienie-python-wheel/2176>\
**Category:** Ogłoszenia\
**Created:** [6 Październik 2021 12:37 UTC](https://ai-speaker.discourse.group/t/zmiany-w-procesie-instalacji-wyjasnienie-python-wheel/2176 "2021-10-06T12:37:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [6 Październik 2021 12:37 UTC](https://ai-speaker.discourse.group/t/zmiany-w-procesie-instalacji-wyjasnienie-python-wheel/2176/1 "2021-10-06T12:37:47Z")

</div>

## Zmiany w procesie instalacji - wyjaśnienie Python Wheel - budowanie koła na bramce

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/df434badfbf435183937a2a3b7e512db02a22660.jpeg)

## Jak instalujemy teraz

Nasza aplikacja ais-dom to pakiet pythona, który dotychczas instalowaliśmy menadżerem pakietów pythona `pip` poleceniem `pip install ais-dom`.  
Aplikacja ma wiele zależności (innych pakietów), to pip dba o to, żeby doinstalować te zależności.

Niektóre pakiety pythona mają rozszerzenia (nie-Pythonowe zależności). Są torozszerzenia lub biblioteki napisane w statycznie typowanym języku, takim jak C, C++ , a nawet Rust lub Go. Żeby zainstalować, pakiet z takimi zależnościami bramka musi albo ściągnąć skompilowany moduł na daną platformę, albo w formie Python Wheel, albo go skompilować na bramce.

Nasze obecne podejście najlepiej podsumować cytując klasyka:

> [@Hello.rs Przykład najprostszego programu w RUST](https://ai-speaker.discourse.group/t/hello-rs-przyklad-najprostszego-programu-w-rust/2120/1):
>
> Z naszej perspektywy, na bramkach DEV najważniejsze jest posiadanie kompilatorów. Wtedy instalacja lub uruchomienie innych pakietów jest łatwa.

To dlatego dodaliśmy na bramki kompilator do C/C++

> [@Hello.c Przykład najprostszego programu w C](https://ai-speaker.discourse.group/t/hello-c-przyklad-najprostszego-programu-w-c/395):
>
> Przykład najprostszego programu w C Opiszę, jak skompilować program w C bezpośrednio na bramce, a następnie uruchomić go z Asystenta domowego. Tworzymy folder z programami cd AIS/ mkdir programs cd programs Dodajemy nowy plik z kodem cd ~/AIS/programs nano hello.c Kod programu: #include \<stdio.h\> int main(void) { printf("Hello\n"); return 0; } Kompilujemy nasz program clang hello.c Uruchamiamy skompilowaną wersję ./a.out Uruchamiamy program z Asystenta domoweg…

Rust:

> [@Hello.rs Przykład najprostszego programu w RUST](https://ai-speaker.discourse.group/t/hello-rs-przyklad-najprostszego-programu-w-rust/2120):
>
> RUST język tworzony przez Fundacje Mozilla Jak podaje Wikipedia: Rust – [kompilowany](https://pl.wikipedia.org/wiki/J%C4%99zyk_kompilowany) [język programowania](https://pl.wikipedia.org/wiki/J%C4%99zyk_programowania) ogólnego przeznaczenia rozwijany przez [Fundację Mozilla](https://pl.wikipedia.org/wiki/Fundacja_Mozilla). Stworzony z myślą, aby był „bezpieczny, [współbieżny](https://pl.wikipedia.org/wiki/Przetwarzanie_wsp%C3%B3%C5%82bie%C5%BCne) i praktyczny”. 3 Powody dlaczego dodaliśmy Rust do repozytorium pakietów AIS Rust to język który w ostatnim czasie mocno nabiera na popularności. Znakomicie sprawdza się w bezpośredniej komunikacji ze sprzętem - ma wszystkie zalety C, ale oferuje bezpieczniejsze i stabilniejsze środ…

Go:

> [@Hello.go - Przykład najprostrzego programu w Go](https://ai-speaker.discourse.group/t/hello-go-przyklad-najprostrzego-programu-w-go/2121):
>
> Pakiet golang na bramce AIS Jak podaje Wikipedia: Go (często nazywany także golang ) – wieloparadygmatowy [język programowania](https://pl.wikipedia.org/wiki/J%C4%99zyk_programowania) opracowany przez pracowników firmy [Google](https://pl.wikipedia.org/wiki/Google): [Roberta Griesemera](https://pl.wikipedia.org/w/index.php?title=Robert_Griesemer&action=edit&redlink=1), [Roba Pike’a](https://pl.wikipedia.org/wiki/Rob_Pike) oraz [Kena Thompsona](https://pl.wikipedia.org/wiki/Ken_Thompson). Łączy w sobie łatwość pisania [aplikacji](https://pl.wikipedia.org/wiki/Aplikacja_(informatyka)) charakterystyczną dla [języków dynamicznych](https://pl.wikipedia.org/wiki/Dynamiczny_j%C4%99zyk_programowania) (np. [Python](https://pl.wikipedia.org/wiki/Python), [Lisp](https://pl.wikipedia.org/wiki/Lisp)), jak również wydajność [języków kompilowanych](https://pl.wikipedia.org/wiki/J%C4%99zyk_kompilowany) (np. [C](https://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania)), [C++](https://pl.wikipedia.org/wiki/C%2B%2B)). Językiem Go zainteresowaliśmy ponieważ klient do tunelu Cloudflare jest napisany w tym języku. [image] Z naszej p…

Są oczywiste zalety naszego obecnego podejścia. Udostępniamy kody oraz kompilatory na bramce DEV - każdy, kto umie programować, może rozwijać i ulepszać cały system… ale umówmy się, programowanie to nie jest bardzo popularny temat wśród użytkowników AIS.

Trzeba też przyznać, że nasze obecne podejście niesie ze sobą kilka uniedogodnień dla użytkowników “nie programistów”. Końcowy użytkownik nie rozumie, dlaczego instalacja trwa długo, dlaczego podczas instalacji coś się kompiluje, dlaczego trzeba instalować 844MB i mieć na bramce kompilator w Rust???

## “Gwóźdź do trumny” dla obecnego modelu aktualizacji

W wersji, nad którą pracujemy, żeby zainstalować crypthography (pakiet, który mamy w zależnościach)

> **[Welcome to pyca/cryptography — Cryptography 47.0.0.dev1 documentation](https://cryptography.io/en/latest/)**

należałoby doinstalować Rust bo do zbudowania pakietu crypthography wymagany jest teraz Rust:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/e/e18d069ef35bf3ae97444a7aa0e08f840a7f081b.png)

Rust jest wielki i na bramkach DEV1 dodawanie Rust to nie najlepszy pomysł… dlatego wybieramy inną drogę i zmieniamy proces installacji.

## Nowy proces instalacji

Od kolejnej aktualizacji zaczniemy dostarczać zbudowane już pakiety na bramkę.

Z punktu widzenia użytkownika końcowego będzie tylko lepiej, bo instalacja będzie szybka, na bramce możemy zwolnić setki MB miejsca, które zajmują kompilatory.

## Możliwe pytania i odpowiedzi 😉

### Na czym będziemy kompilować koła?

Na bramce PRO1

### Dlaczego twórcy pakietów Python sami nie kompilują modułów?

bo  
**ubuntu != centos != macOS != AmigaOS != AIS  
python2.6 != python2.7 != python3.9 != python3.10**

Nikt nie jest w stanie skompilować pakietów pod każdą architekturę systemowo sprzętową.

### Czy nie będzie już można kompilować na bramce?

Oczywiście kompilatorów nie usuniemy z repozytorium - jeżeli ktoś będzie chciał coś kodować, to zawsze może sobie doinstalować.

### Czy nadal będę mógł zainstalować AIS za pomocą pip tak jak kiedyś?

Tak… ale nie będzie to już wspierane. instalacja z konsoli będzie teraz polegała na uruchomieniu skryptu, ten skrypt pobierze już zbudowane przez nas koła na bramkę - tak teraz będzie wyglądała instalacja.  
Zaktualizujemy dokumentację i najnowszą wersję wydamy już “po nowemu”.

### Czy jeszcze coś fajnego ta zmiana wprowadzi dla mnie?

Będize można aktualizaować bramkę offline - wystarczy pobrać paczkę na pendrive i uruchomić skrypt.

Dziękujemy za wszystkie pytania 😉 więcej informacji znajdziecie poniżej:

* * *

> **[What Are Python Wheels and Why Should You Care? – Real Python](https://realpython.com/python-wheels/)**
>
> In this tutorial, you'll learn what Python wheels are and why you should care as both a developer and end user of Python packages. You'll see how the wheel format has gained momentum over the last decade and how it has made the package installation...

---

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [6 Październik 2021 14:05 UTC](https://ai-speaker.discourse.group/t/zmiany-w-procesie-instalacji-wyjasnienie-python-wheel/2176/2 "2021-10-06T14:05:15Z")

</div>

test procesu aktualizacji z konsoli - coś w tym stylu będzie uruchamiane (pod spodem) jak naciśniecie przycisk  
“Instalacja aktualizacji” w aplikacji

[![](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/d315e8786eed13276959f7d69e922c366454cbee.svg)](https://asciinema.org/a/49KmpScpXmunwWn36i3rs4hWw)
