Deploy aplikacji z wirtualnym srodowiskiem

0

W python jestem zielony, ale mam napisany program który dziala. Z samym językiem nie mam prpblemu. Z książek które mam wyczytałem, żeby używać pythona i venv, żeby nie mieć problemów z wersjami.

Moje środowisko to win11. Korzystam z vscode. Stworzyłem wirtualne srodowsko, a pomocą pip poinstalowałem zależności i wszystko śmiga na mojej maszynie. Teraz jest moment w którym muszę to przenieść na produkcyjne środowisko.

Przenoszę na win serwer, mam pełny dostęp, ale nie znalazłem informacji jak to najlepiej przenieść. Moje książki wspominają, że venv jest dynamiczne i nie jest ich celem tłumaczenie tego...

Dlatego postanowiłem zapytać praktyków, jak to się powinno zrobić?

Na razie doszedłem do pip freeze co pozwoli mi na docelowej maszynia poinstalować potrzebne pakiety, ale generalnie wydaje mi się że na docelowym serwerze też muszę zrobić virtalne środowisko.

Ktoś w punktach byłby mi w stanie wypisać kroki jak to zrobić, nie chodzi o szczegółowy manual, ale proste hasła, resztę dogoogluje albo dopytam.

1

Nie wiem czy tak się powinno robić, ale zerknij na pyinstaller.

Od czasu do czasu dłubię w pythonie, ale raczej buduję obrazy dockerowe jak chcę to odpalić gdzieś indziej.

Na potrzeby developmentu mam:

  • pyenv - daje możliwość posiadania kilku wersji pythona i przełączania się między nimi
  • pyenv-venv (plugin do pyenv do używania venva)
  • venv rozdziela Ci projekty względem zależności, tak by uniknąć globalnych konfliktów
  • poetry - ułatwia zarządzanie zależnościami w ramach środowiska venv oraz ułatwia pakowanie

Samo venv możesz spakować, przerzucić na inną maszynkę i rozpakować, ale... tam musisz mieć odpowiednią wersję pythona + venva. Rozpakowujesz, aktywujesz venva i uruchamiasz appkę.

Czasem (w zależności od projektu/potrzeb) klonuję repozytorium Git na konkretny serwer i używam z wersją pythona, którą mam ustawioną w profilu użytkownika.

1

Jak to chcesz zdeployować? Gitlab, Jenkins, w dockerze? Normalnie, masz jakieś skrypty, które ściagają repo, ewentualnie wcześniej container, i instalują pakiety. Tam, gdzie aplikacja ma działać pakiety są normalnie zainstalowane, w ścieżce, nie ma tam venv. Pamiętaj o wbiciu wersji, żeby nie było zdziwienia.

0

@yarel dzięki poczytam

@lion137 nie wiem ;) nie planowałem tego przenosić. Docker wydaje mi się overkillem. Nie zastanawiałem się nad tym. W sumie zaskoczyło mnie to, że jest sporo tematów jak to rozdzielić na developerskiej maszynie, a nic sensownego jak to odpalić na docelowej.

Jestem otwarty na możliwości ma do dyspozycji win serwer z prawami admina, więc postanowiłem zapytać jak to się robi

0

Nie znam się na dockerze ale widziałem jego możliwości i odpowiednio przygotowany docker w zasadzie załatwiłby ci całość tego co potrzebujesz. @lion137 pisał raczej o procesie CI/CD ale z tego co rozumiem ty po prostu potrzebujesz działający kod przerzucić na maszynkę docelową (np serwer) i zapomnieć o temacie. Sam byś się nad takim dockerem pochylił tylko nigdy nie ma czasu na poważnie usiąść i się go choć w podstawowej wersji nauczyć. Za każdym razem taki docker jest już do mnie dostarczany więc nie musiałem się nigdy w to zagłębiać 😛 Osobiście polecałbym właśnie pójść w stronę dockera bo będzie chyba najmniej problemów później z przerzucaniem tego na inne serwery

0

@woolfik dobrze zrozumiałeś mam działający skrypt i muszę go odpalić na innej maszynie. Sprawa wydawała mi się jakaś nie bardzo skomplikowana, jednak okazuje się, że tak nie jest.

Dockera znam w bardzo podstawowym zakresie, ale jak głosi urban legend (nie weryfikowałem) w windowsie podobno nie jest stabilnie.

0

Wykorzystałem odpowiedź @yarel, stowrzyłem exe za pomocą pyinstaller, jako że skrypt ma działac cały czas w tle, uzyłem nssm, aby zainstalować to jako usługę w systemie.
Ruszyło i działa.

Teraz nie mam za bardzo czasu, ale temat dla mnie do rozgryzienia, bo python mi się spodobał i stwierdzam, że włącze go do mojego toolsetu i będę wykorzystywał w projektach, w których widzę sens jego używania. Doświadczyłem dysonansu poznawczego, bo jako dev wywodzący się z desktopa pierwszy raz (a nie jest to pierwszy język, którgo uzywam) miałem problem z deployem, nawet nie tyle problem co nie potrafiłem znaleźć satysfakcjonującej odpowiedzi, zarówno w książkach które mam, jak i w sieci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1