76 KiB
Inżynieria uczenia maszynowego
9. Środowiska wirtualne [laboratoria]
Tomasz Ziętkiewicz (2022)
Python Virtual Env
- Python posiada wbudowany mechanizm do zarządzania wirtualnymi środowiskami
- Nie mylić z bardziej rozbudowanym virtualenv (dla Python 2)
- Umożliwia używanie różnych wersji bibliotek do różnych zastosowań
- Dotyczy on tylko bibliotek pythona
- Więcej informacji: https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
Poniżej stworzymy środowisko w katalogu ./myenv
:
$ python3 -m venv myenv
Teraz możemy je aktywować:
$ source ./myenv/bin/activate
(myenv) $ which python
/home/tomek/myenv/bin/python
I modyfikować instalując zależności:
(myenv) $ python3 -m pip install requests
Środowisko możemy deaktywować poprzez:
deactivate
Środowisko można udostępnić kopiując cały katalog ze środowiskiem
pipx
- pipx: polecenie, które instaluje moduł Pythonowy w odrębnym środowisku wirtualnym venv
- jednocześnie dodaje powiązane z nim polecenie ("Command line entry point") do zmiennej
PATH
- w ten sposób możemy zainstalować polecenie, które będzie globalnie dostępne a jednocześnie nie będzie "mieszało" w zależnościach modułów Pythonowych. Umożliwia to uniknięcie konfliktów między zależnościami i jednocześnie umożliwia dostęp do polecenia oferowanego przez moduł z poziomu systemu (bez ręcznej aktywacji środowiska)
- więcej informacji: https://packaging.python.org/guides/installing-stand-alone-command-line-tools/
- https://github.com/pypa/pipx
Conda
_Package, dependency and environment management for any language—Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN, and more.
Conda umożliwia zarządzanie:
- środowiskami (jak venv)
- paczkami i zależnościami (jak pip)
Dokumentacja: https://docs.conda.io/en/latest/
Różnice między Conda a venv źródło:
- Dowolna wersja Python w Conda (inna niż systemowa)
- Conda zarządza też zależnościami innymi niż Pythonowe
- Paczki w PyPI (używane przez
pip
) pochodzą od ich autorów. Paczki w conda są budowane przez conda albo społeczność conda-forge
Dystrybucje: Anaconda i MiniConda
Conda jest dostępna w dwóch dystrybcjach:
- Miniconda:
- wymaga 400 MB miejsca na dysku
- zawiera jedynie podstawowe narzędzia:
- conda
- Python
- pip, zlib
- pozostałe narzędzia/biblioteki doinstalujemy w miarę potrzeb
- Anaconda
- wymaga conajmniej 3 GB miejsca na dysku
- Zawiera narzędzi GUI Anaconda Navigator (można je doinstalować do Miniconda)
- zawiera to co Miniconda +:
- Ponad 1500 preinstalowanych pakietów, głównie "naukowych", m.in.: SciPy, NumPy, Jupyter, scikit-learn, Pandas
- bezpłatna dla użytkowników indywidualnych, małych firm i orgranizacji non-profit ("Anaconda distribution")
- płatna dla dużych firm (+200 osób i instytucji rządowych ("Anaconda Proferssional")
Dystrybucje
- Wersje paczek/bibliotek zawartych w danej dystrybucji są przetestowane pod względem zgodności ze sobą
- Możemy dokonać zaktualizacji wszystkich pakietów za pomocą polecenia:
conda update conda
- Conda zatroszczy się o to, by rozwiązać potencjalne konflikty wynikające z zależności deklarowanych przez poszczególne biblioteki.
- Nie zawsze wszystkie biblioteki będą w swoich najnowszych wersjach - mogłoby to powodować problemy z działaniem bibliotek od nich zależnych
- Podczas aktualizacji niektóre biblioteki mogą zostać "zdowngradowane"
$ conda update conda
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/tomek/miniconda3
added / updated specs:
- conda
The following packages will be downloaded:
package | build
---------------------------|-----------------
attrs-21.2.0 | pyhd3eb1b0_0 46 KB
cffi-1.14.5 | py39h261ae71_0 226 KB
chardet-4.0.0 |py39h06a4308_1003 194 KB
conda-package-handling-1.7.3| py39h27cfd23_1 884 KB
cryptography-3.4.7 | py39hd23ed53_0 906 KB
decorator-5.0.9 | pyhd3eb1b0_0 12 KB
glib-2.68.2 | h36276a3_0 3.0 MB
idna-2.10 | pyhd3eb1b0_0 52 KB
jinja2-3.0.0 | pyhd3eb1b0_0 106 KB
markupsafe-2.0.1 | py39h27cfd23_0 22 KB
notebook-6.4.0 | py39h06a4308_0 4.1 MB
pygments-2.9.0 | pyhd3eb1b0_0 721 KB
pyopenssl-20.0.1 | pyhd3eb1b0_1 49 KB
requests-2.25.1 | pyhd3eb1b0_0 52 KB
ruamel_yaml-0.15.100 | py39h27cfd23_0 260 KB
tqdm-4.59.0 | pyhd3eb1b0_1 93 KB
urllib3-1.26.4 | pyhd3eb1b0_0 105 KB
------------------------------------------------------------
Total: 10.7 MB
The following packages will be REMOVED:
libedit-3.1.20191231-h14c3975_1
pip-20.3.1-py39h06a4308_0
wheel-0.36.1-pyhd3eb1b0_0
The following packages will be UPDATED:
attrs 20.3.0-pyhd3eb1b0_0 --> 21.2.0-pyhd3eb1b0_0
ca-certificates conda-forge::ca-certificates-2020.12.~ --> pkgs/main::ca-certificates-2021.4.13-h06a4308_1
cffi 1.14.4-py39h261ae71_0 --> 1.14.5-py39h261ae71_0
chardet 3.0.4-py39h06a4308_1003 --> 4.0.0-py39h06a4308_1003
conda conda-forge::conda-4.10.1-py39hf3d152~ --> pkgs/main::conda-4.10.1-py39h06a4308_1
conda-package-han~ 1.7.2-py39h27cfd23_1 --> 1.7.3-py39h27cfd23_1
cryptography 3.3.1-py39h3c74f83_0 --> 3.4.7-py39hd23ed53_0
decorator 5.0.6-pyhd3eb1b0_0 --> 5.0.9-pyhd3eb1b0_0
glib 2.68.1-h36276a3_0 --> 2.68.2-h36276a3_0
jinja2 2.11.3-pyhd3eb1b0_0 --> 3.0.0-pyhd3eb1b0_0
markupsafe 1.1.1-py39h27cfd23_0 --> 2.0.1-py39h27cfd23_0
notebook 6.3.0-py39h06a4308_0 --> 6.4.0-py39h06a4308_0
pygments 2.8.1-pyhd3eb1b0_0 --> 2.9.0-pyhd3eb1b0_0
pyopenssl 20.0.0-pyhd3eb1b0_1 --> 20.0.1-pyhd3eb1b0_1
readline 8.0-h7b6447c_0 --> 8.1-h27cfd23_0
requests 2.25.0-pyhd3eb1b0_0 --> 2.25.1-pyhd3eb1b0_0
ruamel_yaml 0.15.80-py39h27cfd23_0 --> 0.15.100-py39h27cfd23_0
setuptools 51.0.0-py39h06a4308_2 --> 52.0.0-py39h06a4308_0
sqlite 3.33.0-h62c20be_0 --> 3.35.4-hdfb4753_0
tqdm 4.54.1-pyhd3eb1b0_0 --> 4.59.0-pyhd3eb1b0_1
tzdata 2020d-h14c3975_0 --> 2020f-h52ac0ba_0
urllib3 1.25.11-py_0 --> 1.26.4-pyhd3eb1b0_0
The following packages will be SUPERSEDED by a higher-priority channel:
certifi conda-forge::certifi-2020.12.5-py39hf~ --> pkgs/main::certifi-2020.12.5-py39h06a4308_0
The following packages will be DOWNGRADED:
idna 2.10-py_0 --> 2.10-pyhd3eb1b0_0
Proceed ([y]/n)? y
[...]
Pakiety Conda
Pakiet (Package) conda to archiwum o rozszerzeniu .tar.bz2
lub .conda
zawierające:
folder
lib
: biblioteki systemowe, moduły Pythonfolder
bin
: pliki wykonywalne i wszelkie inne pliki potrzebne to zainstalowania danej zależnościmetadane w katalogu
info/
Pakiety można:
wyszukiwać:
conda search pytorch
instalować:
conda install pytorch
tworzyć:
conda build hello_world
usuwać:
conda remove pytorch
Repozytoria i kanały
- Pakiety mogą być ściągane z różnych kanałów ("channels")
- Kanały mogą być zdalne albo lokalne
- Domyślny kanał to https://repo.anaconda.com/pkgs/ - zawiera ponad 7,5 tys pakietów, jest utrzymywany przez Anacondę.
- Jeśli jakiejś paczki nie ma na oficjalnym kanale, bardzo możliwe, że znajdziemy ją na Conda-forge - kanale utrzymywanym przez społeczność
- Wyszukiwanie i przeglądanie pakietów: conda i conda-forge
Na przykład, pakiet mlflow
nie jest dostępny na oficjalnym kanale:
conda search mlflow
Loading channels: done No match found for: mlflow. Search: *mlflow* PackagesNotFoundError: The following packages are not available from current channels: - mlflow Current channels: - https://repo.anaconda.com/pkgs/main/linux-64 - https://repo.anaconda.com/pkgs/main/noarch - https://repo.anaconda.com/pkgs/r/linux-64 - https://repo.anaconda.com/pkgs/r/noarch To search for alternate channels that may provide the conda package you're looking for, navigate to https://anaconda.org and use the search bar at the top of the page. Note: you may need to restart the kernel to use updated packages.
Do poleceń search
i install
możemy dodać flagę channel
co doda podany kanał do listy przeszukiwanych przez to polecenie kanałów:
conda search mlflow --channel conda-forge
Loading channels: done # Name Version Build Channel mlflow 0.9.0.1 py_0 conda-forge mlflow 0.9.1 py_0 conda-forge mlflow 1.0.0 py27_0 conda-forge mlflow 1.0.0 py27_1 conda-forge mlflow 1.0.0 py_2 conda-forge mlflow 1.0.0 py_3 conda-forge mlflow 1.1.0 py_0 conda-forge mlflow 1.2.0 py_0 conda-forge mlflow 1.2.0 py_1 conda-forge mlflow 1.3.0 py36_0 conda-forge mlflow 1.3.0 py37_0 conda-forge mlflow 1.4.0 py36_0 conda-forge mlflow 1.4.0 py37_0 conda-forge mlflow 1.4.0 py38_0 conda-forge mlflow 1.5.0 py36_0 conda-forge mlflow 1.5.0 py36_1 conda-forge mlflow 1.5.0 py37_0 conda-forge mlflow 1.5.0 py37_1 conda-forge mlflow 1.5.0 py38_0 conda-forge mlflow 1.5.0 py38_1 conda-forge mlflow 1.6.0 py36_0 conda-forge mlflow 1.6.0 py37_0 conda-forge mlflow 1.6.0 py38_0 conda-forge mlflow 1.7.0 py36_0 conda-forge mlflow 1.7.0 py37_0 conda-forge mlflow 1.7.0 py38_0 conda-forge mlflow 1.7.1 py36h9f0ad1d_0 conda-forge mlflow 1.7.1 py37hc8dfbb8_0 conda-forge mlflow 1.7.1 py38h32f6830_0 conda-forge mlflow 1.7.2 py36h9f0ad1d_0 conda-forge mlflow 1.7.2 py37hc8dfbb8_0 conda-forge mlflow 1.7.2 py38h32f6830_0 conda-forge mlflow 1.8.0 py36h9f0ad1d_0 conda-forge mlflow 1.8.0 py37hc8dfbb8_0 conda-forge mlflow 1.8.0 py38h32f6830_0 conda-forge mlflow 1.9.1 py36h9f0ad1d_0 conda-forge mlflow 1.9.1 py37hc8dfbb8_0 conda-forge mlflow 1.9.1 py38h32f6830_0 conda-forge mlflow 1.10.0 py36h9f0ad1d_0 conda-forge mlflow 1.10.0 py37hc8dfbb8_0 conda-forge mlflow 1.10.0 py38h32f6830_0 conda-forge mlflow 1.11.0 py36h9f0ad1d_0 conda-forge mlflow 1.11.0 py36h9f0ad1d_1 conda-forge mlflow 1.11.0 py37hc8dfbb8_0 conda-forge mlflow 1.11.0 py37hc8dfbb8_1 conda-forge mlflow 1.11.0 py38h32f6830_0 conda-forge mlflow 1.11.0 py38h32f6830_1 conda-forge mlflow 1.12.0 py36h5fab9bb_0 conda-forge mlflow 1.12.0 py37h89c1867_0 conda-forge mlflow 1.12.0 py38h578d9bd_0 conda-forge mlflow 1.12.1 py36h5fab9bb_0 conda-forge mlflow 1.12.1 py37h89c1867_0 conda-forge mlflow 1.12.1 py38h578d9bd_0 conda-forge mlflow 1.13 py36h5fab9bb_0 conda-forge mlflow 1.13 py37h89c1867_0 conda-forge mlflow 1.13 py38h578d9bd_0 conda-forge mlflow 1.13.1 py36h5fab9bb_0 conda-forge mlflow 1.13.1 py36h5fab9bb_2 conda-forge mlflow 1.13.1 py36hd000896_2 conda-forge mlflow 1.13.1 py37h89c1867_0 conda-forge mlflow 1.13.1 py37h89c1867_2 conda-forge mlflow 1.13.1 py38h578d9bd_0 conda-forge mlflow 1.13.1 py38h578d9bd_2 conda-forge mlflow 1.13.1 py39hf3d152e_2 conda-forge mlflow 1.14.0 py36h24e63a9_1 conda-forge mlflow 1.14.0 py36h5fab9bb_0 conda-forge mlflow 1.14.0 py36h87b8279_1 conda-forge mlflow 1.14.0 py36hd000896_0 conda-forge mlflow 1.14.0 py37h02d9ccd_1 conda-forge mlflow 1.14.0 py37h89c1867_0 conda-forge mlflow 1.14.0 py38h578d9bd_0 conda-forge mlflow 1.14.0 py38he918c71_1 conda-forge mlflow 1.14.0 py39ha39b057_1 conda-forge mlflow 1.14.0 py39hf3d152e_0 conda-forge mlflow 1.14.1 py36h24e63a9_0 conda-forge mlflow 1.14.1 py36h87b8279_0 conda-forge mlflow 1.14.1 py37h02d9ccd_0 conda-forge mlflow 1.14.1 py38he918c71_0 conda-forge mlflow 1.14.1 py39ha39b057_0 conda-forge mlflow 1.15.0 py36h24e63a9_0 conda-forge mlflow 1.15.0 py36h87b8279_0 conda-forge mlflow 1.15.0 py37h02d9ccd_0 conda-forge mlflow 1.15.0 py38he918c71_0 conda-forge mlflow 1.15.0 py39ha39b057_0 conda-forge mlflow 1.16.0 py36h24e63a9_0 conda-forge mlflow 1.16.0 py36h87b8279_0 conda-forge mlflow 1.16.0 py37h02d9ccd_0 conda-forge mlflow 1.16.0 py38he918c71_0 conda-forge mlflow 1.16.0 py39ha39b057_0 conda-forge mlflow 1.17.0 py36h24e63a9_0 conda-forge mlflow 1.17.0 py36h24e63a9_1 conda-forge mlflow 1.17.0 py36h87b8279_0 conda-forge mlflow 1.17.0 py36h87b8279_1 conda-forge mlflow 1.17.0 py37h02d9ccd_0 conda-forge mlflow 1.17.0 py37h02d9ccd_1 conda-forge mlflow 1.17.0 py38he918c71_0 conda-forge mlflow 1.17.0 py38he918c71_1 conda-forge mlflow 1.17.0 py39ha39b057_0 conda-forge mlflow 1.17.0 py39ha39b057_1 conda-forge Note: you may need to restart the kernel to use updated packages.
Możemy dodać kanał conda-forge
tak, żeby był używany automatycznie (bez podawania flagi channel
):
conda config --add channels conda-forge
Warning: 'conda-forge' already in 'channels' list, moving to the top Note: you may need to restart the kernel to use updated packages.
Polecanie conda info
pokaże nam m.in. używane domyślnie kanały.
Możem dodawać i usuwać kanały oraz zmieniać ich kolejność (priorytet) edytując plik ~/.condarc
conda info
active environment : base active env location : /home/tomek/miniconda3 shell level : 1 user config file : /home/tomek/.condarc populated config files : /home/tomek/.condarc conda version : 4.10.1 conda-build version : not installed python version : 3.9.1.final.0 virtual packages : __cuda=11.2=0 __linux=5.4.0=0 __glibc=2.31=0 __unix=0=0 __archspec=1=x86_64 base environment : /home/tomek/miniconda3 (writable) conda av data dir : /home/tomek/miniconda3/etc/conda conda av metadata url : https://repo.anaconda.com/pkgs/main channel URLs : https://conda.anaconda.org/conda-forge/linux-64 https://conda.anaconda.org/conda-forge/noarch https://repo.anaconda.com/pkgs/main/linux-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/r/linux-64 https://repo.anaconda.com/pkgs/r/noarch package cache : /home/tomek/miniconda3/pkgs /home/tomek/.conda/pkgs envs directories : /home/tomek/miniconda3/envs /home/tomek/.conda/envs platform : linux-64 user-agent : conda/4.10.1 requests/2.25.1 CPython/3.9.1 Linux/5.4.0-73-generic ubuntu/20.04.2 glibc/2.31 UID:GID : 1000:1000 netrc file : None offline mode : False Note: you may need to restart the kernel to use updated packages.
Jak widać, po dodaniu kanału conda-forge
, pakiet mlflow
zostaje znaleziony:
conda search mlflow
Loading channels: done # Name Version Build Channel mlflow 0.9.0.1 py_0 conda-forge mlflow 0.9.1 py_0 conda-forge mlflow 1.0.0 py27_0 conda-forge mlflow 1.0.0 py27_1 conda-forge mlflow 1.0.0 py_2 conda-forge mlflow 1.0.0 py_3 conda-forge mlflow 1.1.0 py_0 conda-forge mlflow 1.2.0 py_0 conda-forge mlflow 1.2.0 py_1 conda-forge mlflow 1.3.0 py36_0 conda-forge mlflow 1.3.0 py37_0 conda-forge mlflow 1.4.0 py36_0 conda-forge mlflow 1.4.0 py37_0 conda-forge mlflow 1.4.0 py38_0 conda-forge mlflow 1.5.0 py36_0 conda-forge mlflow 1.5.0 py36_1 conda-forge mlflow 1.5.0 py37_0 conda-forge mlflow 1.5.0 py37_1 conda-forge mlflow 1.5.0 py38_0 conda-forge mlflow 1.5.0 py38_1 conda-forge mlflow 1.6.0 py36_0 conda-forge mlflow 1.6.0 py37_0 conda-forge mlflow 1.6.0 py38_0 conda-forge mlflow 1.7.0 py36_0 conda-forge mlflow 1.7.0 py37_0 conda-forge mlflow 1.7.0 py38_0 conda-forge mlflow 1.7.1 py36h9f0ad1d_0 conda-forge mlflow 1.7.1 py37hc8dfbb8_0 conda-forge mlflow 1.7.1 py38h32f6830_0 conda-forge mlflow 1.7.2 py36h9f0ad1d_0 conda-forge mlflow 1.7.2 py37hc8dfbb8_0 conda-forge mlflow 1.7.2 py38h32f6830_0 conda-forge mlflow 1.8.0 py36h9f0ad1d_0 conda-forge mlflow 1.8.0 py37hc8dfbb8_0 conda-forge mlflow 1.8.0 py38h32f6830_0 conda-forge mlflow 1.9.1 py36h9f0ad1d_0 conda-forge mlflow 1.9.1 py37hc8dfbb8_0 conda-forge mlflow 1.9.1 py38h32f6830_0 conda-forge mlflow 1.10.0 py36h9f0ad1d_0 conda-forge mlflow 1.10.0 py37hc8dfbb8_0 conda-forge mlflow 1.10.0 py38h32f6830_0 conda-forge mlflow 1.11.0 py36h9f0ad1d_0 conda-forge mlflow 1.11.0 py36h9f0ad1d_1 conda-forge mlflow 1.11.0 py37hc8dfbb8_0 conda-forge mlflow 1.11.0 py37hc8dfbb8_1 conda-forge mlflow 1.11.0 py38h32f6830_0 conda-forge mlflow 1.11.0 py38h32f6830_1 conda-forge mlflow 1.12.0 py36h5fab9bb_0 conda-forge mlflow 1.12.0 py37h89c1867_0 conda-forge mlflow 1.12.0 py38h578d9bd_0 conda-forge mlflow 1.12.1 py36h5fab9bb_0 conda-forge mlflow 1.12.1 py37h89c1867_0 conda-forge mlflow 1.12.1 py38h578d9bd_0 conda-forge mlflow 1.13 py36h5fab9bb_0 conda-forge mlflow 1.13 py37h89c1867_0 conda-forge mlflow 1.13 py38h578d9bd_0 conda-forge mlflow 1.13.1 py36h5fab9bb_0 conda-forge mlflow 1.13.1 py36h5fab9bb_2 conda-forge mlflow 1.13.1 py36hd000896_2 conda-forge mlflow 1.13.1 py37h89c1867_0 conda-forge mlflow 1.13.1 py37h89c1867_2 conda-forge mlflow 1.13.1 py38h578d9bd_0 conda-forge mlflow 1.13.1 py38h578d9bd_2 conda-forge mlflow 1.13.1 py39hf3d152e_2 conda-forge mlflow 1.14.0 py36h24e63a9_1 conda-forge mlflow 1.14.0 py36h5fab9bb_0 conda-forge mlflow 1.14.0 py36h87b8279_1 conda-forge mlflow 1.14.0 py36hd000896_0 conda-forge mlflow 1.14.0 py37h02d9ccd_1 conda-forge mlflow 1.14.0 py37h89c1867_0 conda-forge mlflow 1.14.0 py38h578d9bd_0 conda-forge mlflow 1.14.0 py38he918c71_1 conda-forge mlflow 1.14.0 py39ha39b057_1 conda-forge mlflow 1.14.0 py39hf3d152e_0 conda-forge mlflow 1.14.1 py36h24e63a9_0 conda-forge mlflow 1.14.1 py36h87b8279_0 conda-forge mlflow 1.14.1 py37h02d9ccd_0 conda-forge mlflow 1.14.1 py38he918c71_0 conda-forge mlflow 1.14.1 py39ha39b057_0 conda-forge mlflow 1.15.0 py36h24e63a9_0 conda-forge mlflow 1.15.0 py36h87b8279_0 conda-forge mlflow 1.15.0 py37h02d9ccd_0 conda-forge mlflow 1.15.0 py38he918c71_0 conda-forge mlflow 1.15.0 py39ha39b057_0 conda-forge mlflow 1.16.0 py36h24e63a9_0 conda-forge mlflow 1.16.0 py36h87b8279_0 conda-forge mlflow 1.16.0 py37h02d9ccd_0 conda-forge mlflow 1.16.0 py38he918c71_0 conda-forge mlflow 1.16.0 py39ha39b057_0 conda-forge mlflow 1.17.0 py36h24e63a9_0 conda-forge mlflow 1.17.0 py36h24e63a9_1 conda-forge mlflow 1.17.0 py36h87b8279_0 conda-forge mlflow 1.17.0 py36h87b8279_1 conda-forge mlflow 1.17.0 py37h02d9ccd_0 conda-forge mlflow 1.17.0 py37h02d9ccd_1 conda-forge mlflow 1.17.0 py38he918c71_0 conda-forge mlflow 1.17.0 py38he918c71_1 conda-forge mlflow 1.17.0 py39ha39b057_0 conda-forge mlflow 1.17.0 py39ha39b057_1 conda-forge Note: you may need to restart the kernel to use updated packages.
Środowiska (Environments)
- Podstawową funkcjonalnością, którą zapewnia conda są izolowane środowiska
- Nie zapewniają one takiego stopnia izolacji co np. Docker, ale ma to swoje zalety
- Środowisko to tak naprawdę katalog zawierający zbiór bibliotek, plików wykonywalnych i innych zależności
- Środowiska mogą zawierać różne wersje zarówno modułów Python jak i bibliotek systemowych, plików wykonywalnych (w tym samego Pythona)
- Domyślne środowisko nazywa się
base
. Nie powinniśmy go modyfikować a raczej tworzyć nowe środowisko dla każdego zastosowania
Wyświetlanie listy środowisk:
conda info --envs
# conda environments: # /home/tomek/anaconda3 base * /home/tomek/miniconda3 mlflow-004410b12f95e2e00831a0ba11ee1bfdc29d6f9d /home/tomek/miniconda3/envs/mlflow-004410b12f95e2e00831a0ba11ee1bfdc29d6f9d mlflow-503f0c7520a32f054a9d168bd099584a9439de9d /home/tomek/miniconda3/envs/mlflow-503f0c7520a32f054a9d168bd099584a9439de9d mlflow-5987e03d4dbaa5faa1a697bb113be9b9bdc39b29 /home/tomek/miniconda3/envs/mlflow-5987e03d4dbaa5faa1a697bb113be9b9bdc39b29 Note: you may need to restart the kernel to use updated packages.
Tworzenie środowiska
Środowisko można utworzyć i skonfigurować interaktywnie, lub z pliku *.yml
conda create --name hello_env -y
Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /home/tomek/miniconda3/envs/hello_env Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate hello_env # # To deactivate an active environment, use # # $ conda deactivate Note: you may need to restart the kernel to use updated packages.
Aktywacja środowiska
- Żeby zmodyfikować środowisko albo zacząć z niego korzystać, musimy je aktywować.
- Aktywacja środowiska polega tak naprawdę na zmianie zmiennych środowiskowych, które mówią programom gdzie szukać ładowanych przez nie bibliotek i plików wykonywalnych, takich jak
PATH
,PYTHON_PATH
itp. - Po aktywowaniu środowiska w konsoli zobaczymy jego nazwę dopisaną na początku lini poleceń:
$ conda activate hello_env
(hello_env) tomek@tomek-asus:/home$ python3 --version
Python 3.8.5
Domyślnie wersja pythona będzie taka sama jak systemowa.
Żeby deaktywować środowisko, używamy conda deactivate
:
$ conda deactivate
python3 --version
Python 3.8.5
Modyfikowanie środowiska
Jeśli chcemy stworzyc środowisko z inną wersją niż systemowa:
conda create -y -n myenv python=3.9
Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /home/tomek/miniconda3/envs/myenv added / updated specs: - python=3.9 The following packages will be downloaded: package | build ---------------------------|----------------- _libgcc_mutex-0.1 | conda_forge 3 KB conda-forge _openmp_mutex-4.5 | 1_gnu 22 KB conda-forge ld_impl_linux-64-2.35.1 | hea4e1c9_2 618 KB conda-forge libffi-3.3 | h58526e2_2 51 KB conda-forge libgcc-ng-9.3.0 | h2828fa1_19 7.8 MB conda-forge libgomp-9.3.0 | h2828fa1_19 376 KB conda-forge libstdcxx-ng-9.3.0 | h6de172a_19 4.0 MB conda-forge ncurses-6.2 | h58526e2_4 985 KB conda-forge openssl-1.1.1k | h7f98852_0 2.1 MB conda-forge pip-21.1.2 | pyhd8ed1ab_0 1.1 MB conda-forge python-3.9.4 |hffdb5ce_0_cpython 27.4 MB conda-forge readline-8.1 | h46c0cb4_0 295 KB conda-forge setuptools-49.6.0 | py39hf3d152e_3 943 KB conda-forge tk-8.6.10 | h21135ba_1 3.2 MB conda-forge tzdata-2021a | he74cb21_0 121 KB conda-forge wheel-0.36.2 | pyhd3deb0d_0 31 KB conda-forge xz-5.2.5 | h516909a_1 343 KB conda-forge zlib-1.2.11 | h516909a_1010 106 KB conda-forge ------------------------------------------------------------ Total: 49.4 MB The following NEW packages will be INSTALLED: _libgcc_mutex conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge _openmp_mutex conda-forge/linux-64::_openmp_mutex-4.5-1_gnu ca-certificates conda-forge/linux-64::ca-certificates-2020.12.5-ha878542_0 certifi conda-forge/linux-64::certifi-2020.12.5-py39hf3d152e_1 ld_impl_linux-64 conda-forge/linux-64::ld_impl_linux-64-2.35.1-hea4e1c9_2 libffi conda-forge/linux-64::libffi-3.3-h58526e2_2 libgcc-ng conda-forge/linux-64::libgcc-ng-9.3.0-h2828fa1_19 libgomp conda-forge/linux-64::libgomp-9.3.0-h2828fa1_19 libstdcxx-ng conda-forge/linux-64::libstdcxx-ng-9.3.0-h6de172a_19 ncurses conda-forge/linux-64::ncurses-6.2-h58526e2_4 openssl conda-forge/linux-64::openssl-1.1.1k-h7f98852_0 pip conda-forge/noarch::pip-21.1.2-pyhd8ed1ab_0 python conda-forge/linux-64::python-3.9.4-hffdb5ce_0_cpython python_abi conda-forge/linux-64::python_abi-3.9-1_cp39 readline conda-forge/linux-64::readline-8.1-h46c0cb4_0 setuptools conda-forge/linux-64::setuptools-49.6.0-py39hf3d152e_3 sqlite conda-forge/linux-64::sqlite-3.35.5-h74cdb3f_0 tk conda-forge/linux-64::tk-8.6.10-h21135ba_1 tzdata conda-forge/noarch::tzdata-2021a-he74cb21_0 wheel conda-forge/noarch::wheel-0.36.2-pyhd3deb0d_0 xz conda-forge/linux-64::xz-5.2.5-h516909a_1 zlib conda-forge/linux-64::zlib-1.2.11-h516909a_1010 Downloading and Extracting Packages openssl-1.1.1k | 2.1 MB | ##################################### | 100% _libgcc_mutex-0.1 | 3 KB | ##################################### | 100% xz-5.2.5 | 343 KB | ##################################### | 100% zlib-1.2.11 | 106 KB | ##################################### | 100% tk-8.6.10 | 3.2 MB | ##################################### | 100% python-3.9.4 | 27.4 MB | ##################################### | 100% ncurses-6.2 | 985 KB | ##################################### | 100% libstdcxx-ng-9.3.0 | 4.0 MB | ##################################### | 100% tzdata-2021a | 121 KB | ##################################### | 100% setuptools-49.6.0 | 943 KB | ##################################### | 100% wheel-0.36.2 | 31 KB | ##################################### | 100% _openmp_mutex-4.5 | 22 KB | ##################################### | 100% libffi-3.3 | 51 KB | ##################################### | 100% libgomp-9.3.0 | 376 KB | ##################################### | 100% ld_impl_linux-64-2.3 | 618 KB | ##################################### | 100% readline-8.1 | 295 KB | ##################################### | 100% pip-21.1.2 | 1.1 MB | ##################################### | 100% libgcc-ng-9.3.0 | 7.8 MB | ##################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate myenv # # To deactivate an active environment, use # # $ conda deactivate Note: you may need to restart the kernel to use updated packages.
Rzeczywiście, stworzone środowisko ma wersję Pythona z linii 3.9:
$ conda activate myenv
(myenv)$ python3 --version
Python 3.9.4
Tak samo, przy tworzeniu środowiska możemy podać inne zależności wraz z ich wersjami:
conda create -y -n p39-mlflow-pandas python=3.9 pandas=1.2.3 mlflow
Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /home/tomek/miniconda3/envs/p39-mlflow-pandas added / updated specs: - mlflow - pandas=1.2.3 - python=3.9 The following packages will be downloaded: package | build ---------------------------|----------------- alembic-1.6.3 | pyhd8ed1ab_0 114 KB conda-forge appdirs-1.4.4 | pyh9f0ad1d_0 13 KB conda-forge asn1crypto-1.4.0 | pyh9f0ad1d_0 78 KB conda-forge brotlipy-0.7.0 |py39h3811e60_1001 341 KB conda-forge cffi-1.14.5 | py39he32792d_0 227 KB conda-forge chardet-4.0.0 | py39hf3d152e_1 205 KB conda-forge click-8.0.1 | py39hf3d152e_0 146 KB conda-forge cloudpickle-1.6.0 | py_0 22 KB conda-forge configparser-5.0.2 | pyhd8ed1ab_0 21 KB conda-forge cryptography-3.4.7 | py39hbca0aa6_0 1.1 MB conda-forge databricks-cli-0.9.1 | py_0 48 KB conda-forge dataclasses-0.8 | pyhc8e2a94_1 7 KB conda-forge docker-py-5.0.0 | py39hf3d152e_0 187 KB conda-forge docker-pycreds-0.4.0 | py_0 11 KB conda-forge entrypoints-0.3 | pyhd8ed1ab_1003 8 KB conda-forge flask-2.0.1 | pyhd8ed1ab_0 70 KB conda-forge gitdb-4.0.7 | pyhd8ed1ab_0 46 KB conda-forge gitpython-3.1.17 | pyhd8ed1ab_0 115 KB conda-forge gorilla-0.4.0 | pyhd8ed1ab_0 13 KB conda-forge greenlet-1.1.0 | py39he80948d_0 84 KB conda-forge gunicorn-20.1.0 | py39hf3d152e_0 119 KB conda-forge idna-2.10 | pyh9f0ad1d_0 52 KB conda-forge itsdangerous-2.0.1 | pyhd8ed1ab_0 17 KB conda-forge jinja2-3.0.1 | pyhd8ed1ab_0 99 KB conda-forge libblas-3.9.0 | 9_openblas 11 KB conda-forge libcblas-3.9.0 | 9_openblas 11 KB conda-forge libgfortran-ng-9.3.0 | hff62375_19 22 KB conda-forge libgfortran5-9.3.0 | hff62375_19 2.0 MB conda-forge liblapack-3.9.0 | 9_openblas 11 KB conda-forge libopenblas-0.3.15 |pthreads_h8fe5266_1 9.2 MB conda-forge libprotobuf-3.17.0 | h780b84a_0 2.5 MB conda-forge mako-1.1.4 | pyh44b312d_0 58 KB conda-forge markupsafe-2.0.1 | py39h3811e60_0 22 KB conda-forge mlflow-1.2.0 | py_1 3.4 MB conda-forge numpy-1.20.3 | py39hdbf815f_0 5.8 MB conda-forge packaging-20.9 | pyh44b312d_0 35 KB conda-forge pandas-1.2.3 | py39hde0f152_0 12.1 MB conda-forge protobuf-3.17.0 | py39he80948d_0 346 KB conda-forge pycparser-2.20 | pyh9f0ad1d_2 94 KB conda-forge pyopenssl-20.0.1 | pyhd8ed1ab_0 48 KB conda-forge pyparsing-2.4.7 | pyh9f0ad1d_0 60 KB conda-forge pysocks-1.7.1 | py39hf3d152e_3 28 KB conda-forge python-dateutil-2.8.1 | py_0 220 KB conda-forge python-editor-1.0.4 | py_0 9 KB conda-forge pytz-2021.1 | pyhd8ed1ab_0 239 KB conda-forge pyyaml-5.4.1 | py39h3811e60_0 193 KB conda-forge querystring_parser-1.2.4 | py_0 10 KB conda-forge requests-2.25.1 | pyhd3deb0d_0 51 KB conda-forge simplejson-3.17.2 | py39h3811e60_2 103 KB conda-forge six-1.16.0 | pyh6c4a22f_0 14 KB conda-forge smmap-3.0.5 | pyh44b312d_0 22 KB conda-forge sqlalchemy-1.4.15 | py39h3811e60_0 2.3 MB conda-forge sqlparse-0.4.1 | pyh9f0ad1d_0 34 KB conda-forge tabulate-0.8.9 | pyhd8ed1ab_0 26 KB conda-forge typing_extensions-3.7.4.3 | py_0 25 KB conda-forge urllib3-1.26.4 | pyhd8ed1ab_0 99 KB conda-forge websocket-client-0.57.0 | py39hf3d152e_4 59 KB conda-forge werkzeug-2.0.1 | pyhd8ed1ab_0 219 KB conda-forge yaml-0.2.5 | h516909a_0 82 KB conda-forge ------------------------------------------------------------ Total: 42.3 MB The following NEW packages will be INSTALLED: _libgcc_mutex conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge _openmp_mutex conda-forge/linux-64::_openmp_mutex-4.5-1_gnu alembic conda-forge/noarch::alembic-1.6.3-pyhd8ed1ab_0 appdirs conda-forge/noarch::appdirs-1.4.4-pyh9f0ad1d_0 asn1crypto conda-forge/noarch::asn1crypto-1.4.0-pyh9f0ad1d_0 brotlipy conda-forge/linux-64::brotlipy-0.7.0-py39h3811e60_1001 ca-certificates conda-forge/linux-64::ca-certificates-2020.12.5-ha878542_0 certifi conda-forge/linux-64::certifi-2020.12.5-py39hf3d152e_1 cffi conda-forge/linux-64::cffi-1.14.5-py39he32792d_0 chardet conda-forge/linux-64::chardet-4.0.0-py39hf3d152e_1 click conda-forge/linux-64::click-8.0.1-py39hf3d152e_0 cloudpickle conda-forge/noarch::cloudpickle-1.6.0-py_0 configparser conda-forge/noarch::configparser-5.0.2-pyhd8ed1ab_0 cryptography conda-forge/linux-64::cryptography-3.4.7-py39hbca0aa6_0 databricks-cli conda-forge/noarch::databricks-cli-0.9.1-py_0 dataclasses conda-forge/noarch::dataclasses-0.8-pyhc8e2a94_1 docker-py conda-forge/linux-64::docker-py-5.0.0-py39hf3d152e_0 docker-pycreds conda-forge/noarch::docker-pycreds-0.4.0-py_0 entrypoints conda-forge/noarch::entrypoints-0.3-pyhd8ed1ab_1003 flask conda-forge/noarch::flask-2.0.1-pyhd8ed1ab_0 gitdb conda-forge/noarch::gitdb-4.0.7-pyhd8ed1ab_0 gitpython conda-forge/noarch::gitpython-3.1.17-pyhd8ed1ab_0 gorilla conda-forge/noarch::gorilla-0.4.0-pyhd8ed1ab_0 greenlet conda-forge/linux-64::greenlet-1.1.0-py39he80948d_0 gunicorn conda-forge/linux-64::gunicorn-20.1.0-py39hf3d152e_0 idna conda-forge/noarch::idna-2.10-pyh9f0ad1d_0 itsdangerous conda-forge/noarch::itsdangerous-2.0.1-pyhd8ed1ab_0 jinja2 conda-forge/noarch::jinja2-3.0.1-pyhd8ed1ab_0 ld_impl_linux-64 conda-forge/linux-64::ld_impl_linux-64-2.35.1-hea4e1c9_2 libblas conda-forge/linux-64::libblas-3.9.0-9_openblas libcblas conda-forge/linux-64::libcblas-3.9.0-9_openblas libffi conda-forge/linux-64::libffi-3.3-h58526e2_2 libgcc-ng conda-forge/linux-64::libgcc-ng-9.3.0-h2828fa1_19 libgfortran-ng conda-forge/linux-64::libgfortran-ng-9.3.0-hff62375_19 libgfortran5 conda-forge/linux-64::libgfortran5-9.3.0-hff62375_19 libgomp conda-forge/linux-64::libgomp-9.3.0-h2828fa1_19 liblapack conda-forge/linux-64::liblapack-3.9.0-9_openblas libopenblas conda-forge/linux-64::libopenblas-0.3.15-pthreads_h8fe5266_1 libprotobuf conda-forge/linux-64::libprotobuf-3.17.0-h780b84a_0 libstdcxx-ng conda-forge/linux-64::libstdcxx-ng-9.3.0-h6de172a_19 mako conda-forge/noarch::mako-1.1.4-pyh44b312d_0 markupsafe conda-forge/linux-64::markupsafe-2.0.1-py39h3811e60_0 mlflow conda-forge/noarch::mlflow-1.2.0-py_1 ncurses conda-forge/linux-64::ncurses-6.2-h58526e2_4 numpy conda-forge/linux-64::numpy-1.20.3-py39hdbf815f_0 openssl conda-forge/linux-64::openssl-1.1.1k-h7f98852_0 packaging conda-forge/noarch::packaging-20.9-pyh44b312d_0 pandas conda-forge/linux-64::pandas-1.2.3-py39hde0f152_0 pip conda-forge/noarch::pip-21.1.2-pyhd8ed1ab_0 protobuf conda-forge/linux-64::protobuf-3.17.0-py39he80948d_0 pycparser conda-forge/noarch::pycparser-2.20-pyh9f0ad1d_2 pyopenssl conda-forge/noarch::pyopenssl-20.0.1-pyhd8ed1ab_0 pyparsing conda-forge/noarch::pyparsing-2.4.7-pyh9f0ad1d_0 pysocks conda-forge/linux-64::pysocks-1.7.1-py39hf3d152e_3 python conda-forge/linux-64::python-3.9.4-hffdb5ce_0_cpython python-dateutil conda-forge/noarch::python-dateutil-2.8.1-py_0 python-editor conda-forge/noarch::python-editor-1.0.4-py_0 python_abi conda-forge/linux-64::python_abi-3.9-1_cp39 pytz conda-forge/noarch::pytz-2021.1-pyhd8ed1ab_0 pyyaml conda-forge/linux-64::pyyaml-5.4.1-py39h3811e60_0 querystring_parser conda-forge/noarch::querystring_parser-1.2.4-py_0 readline conda-forge/linux-64::readline-8.1-h46c0cb4_0 requests conda-forge/noarch::requests-2.25.1-pyhd3deb0d_0 setuptools conda-forge/linux-64::setuptools-49.6.0-py39hf3d152e_3 simplejson conda-forge/linux-64::simplejson-3.17.2-py39h3811e60_2 six conda-forge/noarch::six-1.16.0-pyh6c4a22f_0 smmap conda-forge/noarch::smmap-3.0.5-pyh44b312d_0 sqlalchemy conda-forge/linux-64::sqlalchemy-1.4.15-py39h3811e60_0 sqlite conda-forge/linux-64::sqlite-3.35.5-h74cdb3f_0 sqlparse conda-forge/noarch::sqlparse-0.4.1-pyh9f0ad1d_0 tabulate conda-forge/noarch::tabulate-0.8.9-pyhd8ed1ab_0 tk conda-forge/linux-64::tk-8.6.10-h21135ba_1 typing_extensions conda-forge/noarch::typing_extensions-3.7.4.3-py_0 tzdata conda-forge/noarch::tzdata-2021a-he74cb21_0 urllib3 conda-forge/noarch::urllib3-1.26.4-pyhd8ed1ab_0 websocket-client conda-forge/linux-64::websocket-client-0.57.0-py39hf3d152e_4 werkzeug conda-forge/noarch::werkzeug-2.0.1-pyhd8ed1ab_0 wheel conda-forge/noarch::wheel-0.36.2-pyhd3deb0d_0 xz conda-forge/linux-64::xz-5.2.5-h516909a_1 yaml conda-forge/linux-64::yaml-0.2.5-h516909a_0 zlib conda-forge/linux-64::zlib-1.2.11-h516909a_1010 Downloading and Extracting Packages smmap-3.0.5 | 22 KB | ##################################### | 100% sqlalchemy-1.4.15 | 2.3 MB | ##################################### | 100% appdirs-1.4.4 | 13 KB | ##################################### | 100% gunicorn-20.1.0 | 119 KB | ##################################### | 100% pyopenssl-20.0.1 | 48 KB | ##################################### | 100% mako-1.1.4 | 58 KB | ##################################### | 100% libopenblas-0.3.15 | 9.2 MB | ##################################### | 100% libcblas-3.9.0 | 11 KB | ##################################### | 100% gitdb-4.0.7 | 46 KB | ##################################### | 100% click-8.0.1 | 146 KB | ##################################### | 100% gorilla-0.4.0 | 13 KB | ##################################### | 100% gitpython-3.1.17 | 115 KB | ##################################### | 100% typing_extensions-3. | 25 KB | ##################################### | 100% pysocks-1.7.1 | 28 KB | ##################################### | 100% pandas-1.2.3 | 12.1 MB | ##################################### | 100% libgfortran-ng-9.3.0 | 22 KB | ##################################### | 100% docker-pycreds-0.4.0 | 11 KB | ##################################### | 100% docker-py-5.0.0 | 187 KB | ##################################### | 100% itsdangerous-2.0.1 | 17 KB | ##################################### | 100% configparser-5.0.2 | 21 KB | ##################################### | 100% sqlparse-0.4.1 | 34 KB | ##################################### | 100% werkzeug-2.0.1 | 219 KB | ##################################### | 100% alembic-1.6.3 | 114 KB | ##################################### | 100% tabulate-0.8.9 | 26 KB | ##################################### | 100% cloudpickle-1.6.0 | 22 KB | ##################################### | 100% asn1crypto-1.4.0 | 78 KB | ##################################### | 100% brotlipy-0.7.0 | 341 KB | ##################################### | 100% dataclasses-0.8 | 7 KB | ##################################### | 100% cryptography-3.4.7 | 1.1 MB | ##################################### | 100% pycparser-2.20 | 94 KB | ##################################### | 100% libprotobuf-3.17.0 | 2.5 MB | ##################################### | 100% simplejson-3.17.2 | 103 KB | ##################################### | 100% requests-2.25.1 | 51 KB | ##################################### | 100% pytz-2021.1 | 239 KB | ##################################### | 100% flask-2.0.1 | 70 KB | ##################################### | 100% numpy-1.20.3 | 5.8 MB | ##################################### | 100% markupsafe-2.0.1 | 22 KB | ##################################### | 100% idna-2.10 | 52 KB | ##################################### | 100% six-1.16.0 | 14 KB | ##################################### | 100% libgfortran5-9.3.0 | 2.0 MB | ##################################### | 100% liblapack-3.9.0 | 11 KB | ##################################### | 100% pyparsing-2.4.7 | 60 KB | ##################################### | 100% packaging-20.9 | 35 KB | ##################################### | 100% jinja2-3.0.1 | 99 KB | ##################################### | 100% chardet-4.0.0 | 205 KB | ##################################### | 100% protobuf-3.17.0 | 346 KB | ##################################### | 100% urllib3-1.26.4 | 99 KB | ##################################### | 100% pyyaml-5.4.1 | 193 KB | ##################################### | 100% databricks-cli-0.9.1 | 48 KB | ##################################### | 100% websocket-client-0.5 | 59 KB | ##################################### | 100% python-dateutil-2.8. | 220 KB | ##################################### | 100% greenlet-1.1.0 | 84 KB | ##################################### | 100% entrypoints-0.3 | 8 KB | ##################################### | 100% yaml-0.2.5 | 82 KB | ##################################### | 100% libblas-3.9.0 | 11 KB | ##################################### | 100% mlflow-1.2.0 | 3.4 MB | ##################################### | 100% cffi-1.14.5 | 227 KB | ##################################### | 100% python-editor-1.0.4 | 9 KB | ##################################### | 100% querystring_parser-1 | 10 KB | ##################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate p39-mlflow-pandas # # To deactivate an active environment, use # # $ conda deactivate Note: you may need to restart the kernel to use updated packages.
Możemy podać jakie pakiety i w jakich wersjach mają być domyślnie dodawane do nowo tworzonych środowisk za pomocą sekcji create_default_package w pliku ~/.condarc
create_default_packages:
- python=3.9
- pandas=1.2.3
- mlflow
Doinstalowanie nowych pakietów może odbyć się poprzez:
conda install mlflow
- wywołane w aktywowanym środowiskuconda install -n myenv mlflow
- wywołane spoza atkywanego środowiska (instaluje mlflow w środowiskumyenv
)pip install
- jeśli w środowisku mamy zainstalowane poleceniepip
- używamypip
tylko, jeśli pakiet nie jest dostępny w repozytoriach conda. Uwagi dotyczące używaniapip
razem z Conda: link
Klonowanie środowiska
Istniejące środowisko można skopiować:
conda create --name myclone --clone myenv
Eksportowanie środowisk
- Definicję środowiska można wyeksportować do pliku
*.yml
, który może potem posłużyć do jego odtworzenia - Takie pliki są np. wykorzystywane przez MLflow
conda env export -n myenv
name: myenv channels: - conda-forge - defaults dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=1_gnu - ca-certificates=2020.12.5=ha878542_0 - certifi=2020.12.5=py39hf3d152e_1 - ld_impl_linux-64=2.35.1=hea4e1c9_2 - libffi=3.3=h58526e2_2 - libgcc-ng=9.3.0=h2828fa1_19 - libgomp=9.3.0=h2828fa1_19 - libstdcxx-ng=9.3.0=h6de172a_19 - ncurses=6.2=h58526e2_4 - openssl=1.1.1k=h7f98852_0 - pip=21.1.2=pyhd8ed1ab_0 - python=3.9.4=hffdb5ce_0_cpython - python_abi=3.9=1_cp39 - readline=8.1=h46c0cb4_0 - setuptools=49.6.0=py39hf3d152e_3 - sqlite=3.35.5=h74cdb3f_0 - tk=8.6.10=h21135ba_1 - tzdata=2021a=he74cb21_0 - wheel=0.36.2=pyhd3deb0d_0 - xz=5.2.5=h516909a_1 - zlib=1.2.11=h516909a_1010 prefix: /home/tomek/miniconda3/envs/myenv Note: you may need to restart the kernel to use updated packages.
Normalnie, zapisalibyśmy wyni eksportu do pliku:
conda env export -n myenv > myenv.yml
Note: you may need to restart the kernel to use updated packages.
Eksport między systemami
- Jeśli chcemy zapeniwć, że nasze środowisko będzie można odtworzyć na innym systemie, musimy uyżyć flagi
--from-history
- Użycie tej flagi spowoduje eksport jedynie tych zależności, które explicite instalowaliśmy (bez ich zależności, które mogą być niekompatybilne między systemami)
conda env export --from-history #Jeśli nie podamy nazwy środowiska, eksportujemy aktywne środowisko
name: base channels: - conda-forge - defaults dependencies: - conda - python=3.9 - jupyter - rise - anaconda-navigator prefix: /home/tomek/miniconda3 Note: you may need to restart the kernel to use updated packages.
Tworzenie środowiska z pliku *.yml
Mając plik *.yml
wyeksportowany za pomocą conda env export
albo stworzony/zmodyfikowane ręcznie, możemy utworzyć na jego podstawie środowisko:
conda env create -n myenv_from_file -f myenv.yml
Collecting package metadata (repodata.json): done Solving environment: done Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate myenv_from_file # # To deactivate an active environment, use # # $ conda deactivate Note: you may need to restart the kernel to use updated packages.
Zadania [10pkt]
- Zainstaluj Anaconda lub Miniconda na swoim komputerze
- Stwórz środowisko zawierające wszystkie zależności wymagane przez stworzone na zajęciach skrypty/programy
- Wyeksportuj środowisko do pliku
environment.yml
i dodaj ten plik do repozytorium