You are on page 1of 6

Python

Environments

Zašto nam je potrebno više Python okruženja?

Pretpostavimo da imamo instaliranu posljednje verzije Python-a i paketa koji su nam potrebni. Kada
preuzmemo neku Python aplikaciju sa GitHub-a ili nekog drugog izvora, te aplikacije će možda zahtijevati
druge verzije Python-a ili paketa od onih koje mi koristimo.

U ovom slučaju je potrebno da podesimo takozvana okruženja.

Takođe, postoje i neke druge sitacije kada je pogodno imati dodatna okruženja:

 Imamo aplikaciju koja je ranije radila dobro. Međutim, kada je pokrenemo, aplikacija
više ne radi. Moguće je da neki paket više nije kompatibilan sa ostalim dijelovima
aplikacije (zbog takozvanih breaking changes). Jedno od mogućih rješenja je postavljanje
novog okruženja koje je u potpunosti kompatibilno sa našom aplikacijom.
 Radite u kolaboraciji i želite da budete sigurno da vaša aplikacija radi na računaru vašeg
saradnika. Takođe možete postaviti okruženje za aplikacije vaših saradnika.
 Dostavljate aplikaciju klijentu i želite da budete sigurno da će aplikacija raditi dobro na
računaru vašeg klijenta

Okruženje se sastoji od određene verzije Python-a i nekih paketa. Dakle, ako želite razvijati ili koristiti
aplikacije sa različitim verzijama Python-a ili paketa, potrebno je da postavite različita okruženja.

Upravljanje okruženjima

Za dodavanje novog okruženja, koje na primjer uključuje verziju Python-a 3.4 koristi se sljedeća
komanda:

conda create --name mynewenv python=3.4


Root okruženje je aktivirano kao podrazumijevano. Za aktivaciju dodatnog okruženja koristi se sljedeća
komanda:

activate mynewenv
Nakon ove komande se komandni prompt mijenja (na primjer iz (root) D:\> u (mynewenv) C:\>)

Direktorijumi izvršnih fajlova aktivnog okruženja su dodani u system path.

Za napuštanje okruženja koristi se sljedeća komanda:

deactivate
Deaktiviranjem nekog okruženja, automatski postaje aktivno root okruženje. Preporuka je da se izvrši
deaktivacija okruženja prije aktivacije nekog drugog okruženja.

Za izlistavanje dostupnih okruženja koristi se sljedeća komanda:

conda env list


Pored aktivnog okruženja pojaviće se zvjezdica. U jednom trenutku samo jedno okruženje može biti
aktivno.

Za dobijanje detaljnih informacija o okruženju koristi se sljedeća komanda:

conda info

Upravljanje paketima

Kanali (channels) su lokacije repozitorijuma gdje Conda traži pakete. Kroz instalaciju Continuum kanali su
postavljeni podrazumijevano pa su to lokacije gdje će Conda tražiti pakete.

Kanali postoje u hijerarhijskom poretku. Kanal sa višim prioritetom je prvi kojeg će Conda provjeriti kada
tražiti pakete koje želite. Možete promijeniti ovaj poredak i takođe dodati nove kanale kao i postaviti
njihove prioritete.

Preporuka je da se kanali dodaju u listu kanala kao kanal sa najnižim prioritetom.

Za dodavanje novog kanala sa najnižim prioritetom koristi se sljedeća komanda:

conda config --append channels newchannel

Za dodavanje novog kanala sa najvišim prioritetom koristi se sljedeća komanda:

conda config --prepend channels newchannel

Za izlistavanje aktivnih kanala i njihovih prioriteta koristi se sljedeća komanda:

conda config --get channels

Ukoliko se paket nalazi u više kanala i pritom su paketi različitih verzija onda prioritet kanala određuje
koji će paket biti instaliran.

Za izlistavanje instaliranih paketa u trenutno aktivnom okruženju koristi se sljedeća komanda

conda list

Za pretražicanje svih dostupnih verzija određenog paketa koristi se sljedeća komanda:

conda search -f package


Za instalaciju paketa koristi se sljedeća komanda (ukoliko se ne navede verzija onda će se instalirati
paket sa najnovijom verzijom iz kanala sa najvišim prioritetom):

conda install package

Moguće je i specifikovati verziju paketa:

codna install package=x.x.x

Za instalaciju paketa iz kanala koji nije na listi kanala koristi se sljedeća komanda:

conda install -c channel package

Za ažuriranje svih instaliranih paketa (utiče samo na aktivno okruženje) koristi se sljedeća komanda:

conda update

Za ažuriranje jednog specifičnog paketa koristi se sljedeća komanda:

conda update package

Za uklanjanje paketa koristi se sljedeća komanda:

conda remove package

Sprečavanje ažuriranja paketa (pinning)

Kreiramo fajl pinned u direktorijumu conda-meta. Dodamo listu paketa za koje ne želimo da budu
ažurirani. Na primjer:

seaborn 0.7.*

yaml ==0.1.7

Mijenjanje Python verzije okruženja

Python je takođe paket.

Prvo trebamo izlistati dostupne Python verzije:

conda search -f python

Za zamjenu trenutne verzije koristi se sljedeća komanda:

conda install python=3.4.2

Za ažuriranje Python verzije na posljednju verziju iz branch-a koristi se sljedeća komanda:

conda update python


Uvod u Python

 dinamički tipiziran jezik


 nema ; na kraju linije
 5 // 3 cjelobrojno dijeljenje
 x ** 2 eksponentizacija ( x ^ 2 )
 ne postoje operacija inkrementa i dekrementa
 za rad sa kompleksnim brojevima postoji ugrađen tip
 za logičke operacije se koriste and, or, not
 string je immutable, slovima stringa je moguće pristupiti pomoću indeksa [ ]
 načini formatiranja stringa:
o hw12 = '%s %s %d' % (hello, world, 12) # Formatiranje stringa
o hw13 = '{:s} {:s} {:d}'.format(hello, world, 13) # Novi stil formatiranja
 pristup elemntima stringa:
o string[2]
o string[-1]
o string[2:4]
o string [5:-3]
 funkcije capitalize(), replace (, ), strip(), upper()
 naredbe grananja:
o if:
o KOD
o elif:
o KOD
o else:
o KOD
 for petlja:
o for x in array:
o KOD
 za prolazak kroz određen niz brojeva može se koristiti funkcija range(start, begin, step) koja
vraća iterator
 while petlja:
o while a < 10:
o KOD
 postoje naredbe break i continue
 python posjeduje nekoliko tipova kontejnera: liste, riječnike/mape, skupove, i uređene n-torke
 lista se može kreirati nabrajanjem ili funkcijom list():
o x = [3, 1, 2]
o nums = list(range(5))
 ukoliko je potrebno pristupiti i elementu i njegovom indeksu moguće je koristiti funkciju
enumerate():
o for idx, animal in enumerate(animals):
 List comprehensions:
o nums = [0, 1, 2, 3, 4]
o squares = [ x ** 2 for x in nums if x % 2 == 0]
 kreiranje novog dictionary-a:
o d = { 'cat' : 'cute', 'dog' : 'furrty'}
 pristup:
o d['cat']
o d.get('monkey', 'n/a')
 del d['fish']
 provjera da li ključ postoji:
o 'cat' in d
 iteriranje kroz dictionary:
o for animal in d:
o d[animal]
 drugi način iteriranja:
o for animal, legs in d.items():
 Dictionary comprehensions:
o nums = [0, 1, 2, 3, 4]
o even_num_to_sq = { x : x ** 2 for x in nums if x % 2 == 0}
 sets:
o animals = { 'cat', 'dog'}
o provjera da li je u setu:
 'cat' in animals
o len(animals)
o animals.add('cat')
o animals.remove('cat')
o iteriranje slično kao kod listi
 Set comprehensions:
o from math import sqrt
o nums = { int(sqrt(x)) for x in range(30)}
 Tuple je uređena lista vrijednosti koja je nepromjenljiva
 Slični su listama sa razlikom što se tuple može koristiti kao ključ u dictionary ili kao element set-a
 Funkcije se definišu ključnom riječju def:
o def sign(x):
o if x > 0:
o return 'pos'
o else:
o return 'neg'
 Parametar funkcije može biti podrazumijevan
 Klase:
o class Greeter(object):
o def __init__(self, name):
o self.name = name
o def greet(self, loud=False):
o do_somethig
o g = Greeter('Fred')
 Za importovanje biblioteka koristi se ključna riječ import (import numpy)
 Moguće je i import numpy as np
 Ako je potrebno uključiti samo neke funkcije ili klase koriste se ključne riječi from i import:
o from scipy.io import wavfile

You might also like