Środowiska wirtualne i zarządzanie zależnościami w Pythonie. Piotr Grzesik

Podobne dokumenty
Pracownia Technik Obliczeniowych

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Załącznik 1 instrukcje instalacji

Załącznik 1 instrukcje instalacji

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

BUDOWANIE APLIKACJI. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

BIOWEB INSTRUKCJA URUCHOMIENIA W IDE ECLIPSE RATIONAL SOFTWARE ARCHITECT

CVS system kontroli wersji

MentorGraphics ModelSim

LINUX. Instalacja oprogramowania

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Odczytywanie i zapisywanie obrazów rastrowych do plików, operacje punktowe na tablicach obrazów

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Instalacja SAS Forecast Studio for Desktop 12.1

Dokumentacja kompilacji źródeł aplikacji 1.0

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

Słowa kluczowe jak góry lodowe

Acronis Universal Restore

Pakiety i interfejsy. Tomasz Borzyszkowski

Wprowadzenie do narzędzia MAVEN

Instrukcja instalacji oprogramowania dla środowiska Windows

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

Materiały dodatkowe. Raspberry Pi

Tworzenie i korzystanie z plików JAR. Biblioteka JFreeChart

Kurs rozszerzony języka Python

Technologie informacyjne: Excel i Python

Java jako język programowania

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Sieciowa instalacja Sekafi 3 SQL

MAMP Mac + Apache + MySQL + PHP. Kraków 8 czerwca 2009, Adam Strzelecki,

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Język Python (2) Język Python (2) 1/36

Instrukcja instalacji oprogramowania dla środowiska Linux

Instrukcja instalatora kart mikroprocesorowych od Windows XP do Windows Wstęp 1 2. Wymagania instalacji 1 3.

Pobieranie edytora CodeLite

PyPy's Approach to Virtual Machine Construction

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Użycie pakietów instalacyjnych.msi w oprogramowaniu WYWIAD Plus

Instalacja krok po kroku /instalacja programu, serwera bazy danych/

Podstawy analizy danych numerycznych w języku Python

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Tworzenie oprogramowania

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

Instrukcja instalacji oprogramowania dla środowiska Linux

Instalacja NOD32 Remote Administrator

Dokumentacja końcowa projektu z ZPR

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

61 Topologie wirtualne

I. Uruchomić setup i postępować według instrukcji

IBM SPSS Statistics Wersja 23. Konfigurowanie ułatwień dostępu

Instrukcja instalacji

Instrukcja instalacji oprogramowania dla środowiska MacOS

Instrukcja instalacji oprogramowania dla środowiska Windows

Instrukcja instalacji oprogramowania dla środowiska Linux

Programowanie w C. dr inż. Stanisław Wszelak

Mirror Tool.

Praca w środowisku Cygwin. Przygotował Mateusz Dudek

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Znaki globalne w Linuxie

enova365 Jak zainstalować wersję demo?

Programowanie obiektowe

Automatyczna instalacja oprogramowania.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

MICROSOFT WINDOWS INSTALLER TWORZENIE INSTALATORÓW W ŚRODOWISKU VISUAL STUDIO.NET

Generacja paczki instalacyjnej F-Secure Client Security/Client Security Premium

Instalacja środowiska Eclipse

Metryki. Narzędzia do pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

Programowanie Systemów Wbudowanych

Dokumentacja instalatora środowiska obsługi kart mikroprocesorowych w wersji Spis treści

Instalacja i opis podstawowych funkcji programu Dev-C++

Jak się poruszać w świecie Java Plug-inów (JRE)

Dokumentacja Administratora portalu. aplikacji. Wirtualna szkoła

finiownia loginów. W zależności od ustawionej opcji użytkownik login:

VinCent v.1.40 zmiany w programie

Instrukcja aplikacji R-Quick

inode instalacja sterowników USB dla adaptera BT 4.0

1. Wprowadzenie. 2. Instalacja i uruchomienie. 3. Projekt i POM

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Linux

System operacyjny Linux

Deployment w Visual Studio 2010

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Platforma Eclipse: Pluginy, RCP oraz GEF

Uproszczona instalacja SAS Forecast Server 4.1

Przetwarzanie danych w chmurze

Zasoby, pliki graficzne

W celu uruchomienia kontrolera należy w katalogu głównym kontrolera z wiersza poleceń wydać następujące polecenie: $ java -jar target/floodlight.

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: z zakresu systemów

Konsola i interpreter poleceń

Dokumentacja instalatora środowiska obsługi kart mikroprocesorowych w wersji Spis treści

Instalacja środowiska MPI w systemie operacyjnym Linux

1. Od czego zacząć? - Instalacja środowiska pracy

Konfiguracja SNMP z wykorzystaniem pakietu MRTG

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna)

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Opis modułu pl.id w programie Komornik SQL-VAT

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy

Transkrypt:

Środowiska wirtualne i zarządzanie zależnościami w Pythonie Piotr Grzesik

Dwa słowa o mnie

Pip (https://github.com/pypa/pip) Rekomendowany przez PyPA (Python Packaging Authority) instalator pakietów Dystrybuowany wraz z Pythonem >=2.7.9 i >=3.4 Domyślnie instaluje paczki z pypi.python.org/pypi

Pip - przydatne komendy pip install package pip install 'package>=1.0' pip install package==1.0 pip install -r requirements.txt pip uninstall package pip list pip list --outdated pip freeze pip freeze > requirements.txt pip show package pip search "query"

Pyenv - zarządzamy wersjami Pythona (https://github.com/pyenv/pyenv) Narzędzie do zarządzania wersjami intepretera Pythona Wspiera CPython, PyPy, Stackless, JPython, IronPython Podobne do nvm (node.js) czy rvm, rbenv (Ruby) Zarządzanie globalną wersją dla użytkownika Konfiguracja wersji dla konkretnego projektu Brak wsparcia dla Windowsa

Jak działa pyenv - shims Pyenv dodaje na początku PATH scieżkę ~/.pyenv/shims, w której znajdują się shimy, będące plikami wykonywalnymi, odpowiedzialnymi za przekazanie wywołania do pyenva. Gdy chcemy wywołać komendę np. pip, wykonane zostają następujące kroki: 1. Przeszukanie PATH w poszukiwaniu pliku wykonywalnego pip 2. Znalezienie shim pip 3. Wykonanie shim, który przekazuje wywołanie do pyenva

Kolejność wyboru wersji interpretera 1. Zmienna środowiskowa PYENV_VERSION (komenda pyenv shell) 2. Plik.python-version w aktualnym katalogu (można go utworzyć komendą pyenv local) 3. Plik.python-version w katalogu nadrzędnym (aż do /) 4. Plik ~/.pyenv/version (komenda pyenv global)

Pyenv update (https://github.com/pyenv/pyenv-update) Plugin dodający możliwość aktualizacji pyenv'a za pomocą komendy pyenv update Aktualizuje zarówno pyenva, jak i inne zainstalowane pluginy np. pyenv-virtualenv

Demo pyenv

Virtualenvs - środowiska wirtualne w Pythonie Środowiska izolowane od siebie i systemowego Pythona Każde ze środowisk ma odrębne zależności (np. środowiska mające różne wersje tej samej biblioteki) Pozwala używać bibliotek(zewnętrznych lub własnych), bez zaśmiecania systemowego Pythona Od Pythona 3.3 część biblioteki standardowej (PEP 405)

Virtualenv - jak używać Python < 3.3 ~ pip install virtualenv ~ virtualenv /path/to/env Python 3.3 i wyżej (deprecated od wersji 3.6) ~ pyvenv /path/to/env Rekomendowane od wersji 3.5 ~ python3 -m venv /path/to/env Aktywacja utworzonego virtualenva ~ source /path/to/env/bin/activate Deaktywacja utworzonego virtualenva ~ deactivate

Virtualenv - jak działa? Activate - dodaje na początku PATH ścieżkę /path/to/env/bin sys.path - ścieżki wyszukiwania dla modułów podczas importów 3rd party virtualenv - zmodyfikowany site.py, orig-prefix.txt pozwala na dołączenie biblioteki standardowej (sys.prefix) Wbudowany virtualenv - plik pyvenv.cfg (sys.prefix i sys.base_prefix) Pakiety instalowane są do /path/to/env/lib/pythonx.y/site-packages Przykładowy plik pyvenv.cfg: home = /usr/bin include-system-site-packages = false version = 3.5.2

Pyenv + virtualenv (https://github.com/pyenv/pyenv-virtualenv) Plugin do pyenva pozwalający na zarządzanie virtualenvami, a także środowiskami stworzonymi za pomocą conda Wspiera zarówno virtualenv jak i venv będący częścią biblioteki standardowej

Pyenv-virtualenv demo

Conda (https://github.com/conda/conda) Pozwala zarządzać zarówno pakietami jak i środowiskami Wieloplatformowość (Win/macOS/Linux) Zarządzanie wersjami Pythona (od 2.6.8 do 3.6+) Instalacja paczek wewnątrz utworzonych środowisk również za pomocą pip'a Instalacja binarnych pakietów (brak konieczności kompilacji podczas instalacji) Możliwość instalacji pakietów napisanych w innych językach np. C/C++, Java, Scala, JavaScript, FORTRAN, R

Zarządzanie zależnościami - dlaczego? Lista bibliotek, z których korzysta nasza aplikacja/skrypt (najczęściej plik requirements.txt) Logiczny podział zależności (np. oddzielna lista zależności do testów, oddzielna lista dla ludzi i maszyn) Stabilne i powtarzalne buildy na różnych środowiskach

pipreqs (https://github.com/bndr/pipreqs) Pozwala na generowanie pliku z zależnościami na podstawie importów w projekcie Przykład użycia: pipreqs /path/to/project Przykładowy rezultat requirements.txt: wheel==0.23.0 Yarg==0.1.9 docopt==0.6.2

pip-tools (https://github.com/jazzband/pip-tools) Oddzielna lista zależności dla ludzi i maszyn Narzędzie pozwalające "przypinać" zależności pip-compile + pip-sync

pip-tools demo

Pipfile (https://github.com/pypa/pipfile) "Requirements.txt" 2.0 - propozycja nowego standardu Inicjatywa PyPA (Python Packaging Authority) Zastąpienie "requirements.txt" przy pomocy Pipfile oraz Pipfile.lock Pipfile - składnia TOML, zawiera podstawowe zależności oraz ich źródło Pipfile.lock - zawiera deterministyczny zestaw zależności, pozwalający na powtarzalny deployment aplikacji

Przykładowy Pipfile [[source]] url = "https://pypi.python.org/simple" verify_ssl = true [dev-packages] pytest = "*" [packages] requests = "*" [requires] python_version = "3.6"

Przykładowy Pipfile.lock { "_meta": { "hash": { "sha256": "a97c6ee0bb0a72c606f78b9f7a8088b61d838cb6312a26574d2126ad09acfead" }, "host-environment-markers": { "implementation_name": "cpython", "implementation_version": "3.6.2", "os_name": "posix", "platform_machine": "x86_64", "platform_python_implementation": "CPython", "platform_release": "4.4.0-53-generic", "platform_system": "Linux", "platform_version": "#74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016", "python_full_version": "3.6.2", "python_version": "3.6", "sys_platform": "linux" }, "pipfile-spec": 3, "requires": { "python_version": "3.6" }, "sources": [ { "url": "https://pypi.python.org/simple", "verify_ssl": true } ] }, "default": { "certifi": { "hashes": [ "sha256:54a07c09c586b0e4c619f02a5e94e36619da8e2b053e20f594348c0611803704", "sha256:40523d2efb60523e113b44602298f0960e900388cf3bb6043f645cf57ea9e3f5" ], "version": "==2017.7.27.1" },

pipenv (https://github.com/kennethreitz/pipenv) Narzędzie rekomendowane przez PyPA Połączenie pip, Pipfile oraz virtualenv Automatycznie tworzy virtualenva jeśli nie istnieje Automatycznie dodaje/usuwa zależności do Pipfile podczas ich instalacji/usuwania Tworzenie pliku Pipfile.lock Instalacja zależności z Pipfile.lock Z defaultu używa hashy do weryfikacji pakietów

Pipenv demo

pipsi (https://github.com/mitsuhiko/pipsi) Wrapper na pip i virtualenv Służy do instalacji pakietów do oddzielnych środowisk wirtualnych

pipdeptree (https://github.com/naiquevin/pipdeptree) pip freeze "na sterydach" Służy do wyświetlania zainstalowanych pakietów w postaci drzewa zależności ipython==6.1.0 - decorator [required: Any, installed: 4.1.2] - jedi [required: >=0.10, installed: 0.10.2] - pexpect [required: Any, installed: 4.2.1] - ptyprocess [required: >=0.5, installed: 0.5.2] - pickleshare [required: Any, installed: 0.7.4] - prompt-toolkit [required: <2.0.0,>=1.0.4, installed: 1.0.15] - six [required: >=1.9.0, installed: 1.10.0] - wcwidth [required: Any, installed: 0.1.7] - pygments [required: Any, installed: 2.2.0] - setuptools [required: >=18.5, installed: 28.8.0] - simplegeneric [required: >0.8, installed: 0.8.1] - traitlets [required: >=4.2, installed: 4.3.2] - decorator [required: Any, installed: 4.1.2] - ipython-genutils [required: Any, installed: 0.2.0] - six [required: Any, installed: 1.10.0] pipdeptree==0.10.1 - pip [required: >=6.0.0, installed: 9.0.1]

Dziękuję! @p_grzesik pj.grzesik@gmail.com