Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[Python] cz.2 | Instalacja i konfiguracja

Instalacja
Python dostępny jest dla Windows, Linux, *BSD, Haiku oraz MacOS X.

Niestety nie mam większej styczności z Haiku czy MacOS X dlatego proces instalacji pokażę tylko dla użytkowników systemów Linux, Windows oraz BSD.

Dla Windows gotowy jest instalator graficzny do pobrania ze strony python.org, zainstalowany interpreter domyślnie znajdzie się w C:\Python27 (gdzie 27=2.7 to wersja którą zainstalowaliśmy).

W dowolnym systemie opartym o Linuksa python powinien być już zainstalowany, a jeśli nie to można go zainstalować za pomocą menadżera pakietów.

Zazwyczaj w systemach Uniksowych jest dostępnych kilka wersji pythona np. python 2.5, python 2.6, python 2.7, python 3.1 czy python 3.2

Debian, Ubuntu, Linux Mint:apt-get install python

Arch Linux:pacman -S python2

Myślę, że dla Fedory czy Gentoo instrukcje są zbędne ponieważ ich menadżery pakietów yum oraz portage zostały napisane czysto w pythonie.

FreeBSD:cd /usr/ports/python27 make install

Tak więc po zainstalowaniu możemy w systemac Uniksowych uruchomić interpreter za pomocą polecenia "python" a w Windows wystarczy odnaleźć katalog z instalacją Pythona oraz kliknąć dwukrotnie na python/python.exe

Narzędzie do edycji kodu

Wybór w zasadzie jest prawie nieograniczony, można skorzystać z dowolnego edytora tekstowego.

Gedit

Ze swojej strony polecam program gedit, jest to prosty edytor tekstowy z kolorowaniem składni, obsługą wtyczek i automatycznych wcięć, różnych stylów itp.

Użytkownicy Windows mogą pobrać aplikację z oficjalnej strony klikając na odnośnik "gedit win32 binary".

Domyślnie w Ubuntu i Debianie (ogólnie w GNOME) gedit jest domyślnie zainstalowany.

Ze swojej strony polecam konfigurację programu tak jak przedstawia obrazek powyżej czyli;

[v] Bez rozdzielania słów
[v] Wyświetlanie numerów wierszy
[v] Wyróżnianie bieżącego wiersza
[v] Wyróżnianie pasujących nawiasów
Szerokość tabulacji: 4
[v] Wstawianie spacji zamiast tabulatorów (bardzo ważne aby zaznaczyć obowiązkowo)

Style kolorowania składni oraz tło głównego okna można ustawić w zakładce Czcionki i kolory.

GNU Nano

Pod terminal dla początkujących polecam GNU nano "nano", bardzo proste i przyjemne narzędzie.

Podstawowa obsługa nano: Ctrl + K - wycinanie tekstu linia po linii Ctrl + U - wklejanie wyciętego tekstu Ctrl + C - pokazuje aktualną pozycję (w tym linię) Ctrl + O - zapisuje plik Ctrl + R - wczytywanie pliku Ctrl + W - wyszukiwanie Ctrl + X - wyjście

Notepad++

Kolejnym w miarę dobrym edytorem tekstowym w tym wypadku może być Notepad++, jest to narzędzie przeznaczone dla użytkowników Windows - można je znaleźć na oficjalnej stronie programu.

 

linux oprogramowanie programowanie

Komentarze

0 nowych
kubut   17 #1 07.12.2011 23:27

Uf, na szczęście PHPDesigner obsługuje pythona, nie muszę doinstalowywać kolejnego edytora :)

webnull   9 #2 07.12.2011 23:46

@kubut
To dobrze.
W tekście podałem takie bardziej powszechne, wieloplatformowe edytory aby dogodzić każdemu :-)

NiceZakiCJ   4 #3 08.12.2011 02:42

świetne!

  #4 08.12.2011 07:25

Jeżeli mowa o Pythonie, to zawsze polecam http://www.geany.org/ .

4lpha   9 #5 08.12.2011 07:36

I love it!
Kontynuuj, proszę.

  #6 08.12.2011 08:30

super, czekamy na więcej

dominikc   5 #7 08.12.2011 08:53

Na Mac OS X polecam TextMate. I oczywiście czekam na kolejne wpisy :)

Saskatchewan   7 #8 08.12.2011 12:03

Nie poruszyłeś standardowej kwestii :-) - instalować Pythona 2, czy 3? Odpowiedź na to pytanie jest taka, że chyba jednak nadal powinno się wybrać dwójkę ze względu na to, że wiele "zewnętrznych" bibliotek nie jest ciągle przeportowana na trójkę. Co nie zaprzecza oczywiście temu, że i na wersji 3 da się i tak duuużo zrobić. (Dla początkujących i ciekawych: różnic nie ma tak naprawdę tak dużo, a wiele nowości z trójki pojawiło się już w Pythonie 2.6.)

Co do edytorów - pisząc pracę dyplomową, szukałem dobrego edytora dla LaTeXa i znalazłem emacsa (tutaj jęczenie: tak, jasne - emacs, vim, itp :p). Okazało się, że nadaje się on wspaniale do pisania w Pythonie. Naprawdę wygodnie się pisze skrypty mając podzielony ekran: z jednej strony kod, a z drugiej interaktywny interpreter.

Dla mniej wymagających polecam też po prostu IDLE, czyli edytor Pythona napisany w Pythonie, wykorzystujący interfejs Tk, dołączony w standardowej instalacji (przynajmniej na Windows). Można odpalić dwa okienka - jedno z edytorem, drugie z interpreterem i jednym klawiszem wysyłać kod do interpretera. Pracuje się "podobnie" jak w emacsie na dzielonym ekranie.

  #9 08.12.2011 12:37

@Saskatchewan
Racja, że też to pominąłem :/

Jeśli chodzi o naukę, to może jednak 3.x -> wątpię, żeby na początek komuś było potrzebne np. Scipy, Numpy etc (chociaż Sage wymaga 2.x z tego właśnie powodu).

Jednak z drugiej strony nie wiadomo, kiedy zostaną przeportowane te biblioteki.
I tu jest właśnie problem. Takie Sage np wymagało by przepisania. A to dużo kodu.
Całe AppEngine od Google tak samo (wersja coś koło 2.6.x). Bardzo dużo innych framework'ów również gałąź 2.6.x i/lub też 2.7.x

Postępując wedle zasady "jak coś działa, to się tego nie zmienia" i patrząc na to, że jednak Python 3.x nie wnosi zbytnio poprawy (w większości tylko kosmetyka), to nie dziwię się, że mało kto odważy się na przeportowanie swojego kodu.


"a wiele nowości z trójki pojawiło się już w Pythonie 2.6."
Dlatego, że jenak 3.x to tylko w większości właśnie kosmetyka...


IDLE?
Bardzo ciekawe. A co powiesz na iPython? Tym bardziej, że lubisz Emacs...
Chociaż IDLE dobre na Windows. Bo w GNU/Linux i GNome (lub tylko konsola - mniam, bez żadnych X'ów ;] ), to mi wystarcza iPython + jakiś edytor np. GEdit i komendy CTRL+ALT+(strzałka prawo/lewo) ;]

Jak tak teraz patrzę, to jednak webnull powinien się bardziej przygotować do tekstów o Pythonie, bo jednak brakuje trochę.


A odrywając się trochę od tematu.
Byłby ktoś chętny na napisanie czegoś podobnego do Sage w F#?


Pozdrawiam

Saskatchewan   7 #10 08.12.2011 13:34

Ja tak naprawdę dużo nie programuję, więc wymagań ogromnych nie mam. IPythona zainstalowałem kiedyś, ale tak naprawdę nie używałem, więc się nie wypowiadam.
Kontynuując Python 2 vs Python 3, to jeśli chodzi o zastosowanie np. we frameworkach webowych, to dużego wyboru też nie ma. Jakiś czas temu, gdy szukałem informacji na ten temat, znalazłem jedynie CherryPy, które obsługuje trójkę.

997   5 #11 08.12.2011 14:10

Natomiast jeśli ktoś programował za pomocą Visual Studio MSa, to możne się zaopatrzyć w PyQt -> Takie Visual Studio dla Pythona ;)

A język bardzo fajny zwłaszcza, że małym nakładem pracy możemy napisać szybko to czego potrzebujemy.

Frankfurterium   9 #12 08.12.2011 15:26

Efektywność małym nakładem pracy to, z tego co zauważyłem, dyżurny tekst Pythonowców. Ktoś potrafi to wyjaśnić laikowi zapatrzonemu w .NET-a?

Yuri20   4 #13 08.12.2011 16:37

Takie troche przyśpieszone pytanie, ale nauczę się z Tobą programować w qt? :)

kwpolska   5 #14 08.12.2011 16:38

W Mac OS X python jest OotB, AFAIK.

webnull   9 #15 08.12.2011 16:59

@Yuri20 | 08.12.2011 16:37
W QT nie sądzę póki co, ale w GTK tak.

iluzion   5 #16 08.12.2011 18:26

@Frankfurterium

Efektywność w porównaniu do C/C++. Python ma całkiem bogatą bibliotekę standardową... moduł email, csv, zipfile itd. (przy wadze instalatora dla Windows ~15 MB). W Javie trzeba korzystać z bibliotek zewnętrznych, aby mieć możliwość łatwego wysyłania wiadomości email, obsługi plików csv czy zip. Miłośnicy Javy oczywiście stwierdzą, że mogą sobie sami zaimplementować obsługę plików csv, ale pełna implementacja z obsługą dialektów, separatorów trochę dodatkowych linii zajmie;) Chociaż działa to również w drugą stronę. W trzecia strona medalu jest taka, że jak będę chciał skorzystać z bibliotek .NET (np. Microsoft.Office.Interop.Excel) to użyję IronPythona i nie będę musiał się uczyć nowego języka do tego celu.

Poniżej podam pierwszy lepszy przykład z języka C# znaleziony w sieci i przepisany w Pythonie:

Fragment kodu w C#
===============

using System;
using System.IO;

class FinallyDemo
{
static void Main(string[] args)
{
FileStream outStream = null;
FileStream inStream = null;

try
{
outStream = File.OpenWrite("DestinationFile.txt");
inStream = File.OpenRead("BogusInputFile.txt");
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if (outStream != null)
{
outStream.Close();
Console.WriteLine("outStream closed.");
}
if (inStream != null)
{
inStream.Close();
Console.WriteLine("inStream closed.");
}
}
}
}

To samo w Pythonie:
===============

try:
with open("do_odczytu.txt") as fin, open("do zapisu.txt", "w") as fout:
pass
except IOError, err:
print(err)
finally:
if fin.closed: print("fin jest zamknięty")
if fout.closed: print("fout jest zamknięty")

Ps Ukazała się nowa wersja (beta) Python Tools for Visual Studio

http://pytools.codeplex.com/

iluzion   5 #17 08.12.2011 18:32

Wcięło wcięcia, więc daję screena;)

http://i.imgur.com/GMGXk.png

  #18 08.12.2011 19:47

@iluzion
PO 1. Twój kod C# jest hmm lekko "nie tyges".
PO 2. Porównaj teraz szybkość działania C# i Pythona np przy pliku "troszkę" większym.


Uwierz, że szybko pozbyłbyś się Pythona

Aha i jak dałeś kod w Pythonie, to także daj w C# - chodzi o zrzut, żeby było widać jak wygląda.

Jeśli chodzi o kod C# to nie używa sie using System; w postacie takiej jak ty napisałeś.
Mogłeś zrobić tak:
try
{
FileStream outStream = File.OpenWrite("DestinationFile.txt");
FileStream inStream = File.OpenRead("BogusInputFile.txt");
}

Inna sprawa, ze mogłeś zrobić w C# tak i będzie szybciej i krócej niż w Pythonie
using System;
using System.IO;

class Program
{
static void Main()
{
try {
File.Copy("BogusInputFile.txt, "DestinationFile.txt");
}
catch (Exception ex) {
Console.WriteLine(ex);
}
}
}

Jest jeszcze innych parę rzeczy, co można by było poprawić w Pythonie i w C#, ale nie będę się tutaj pocić, jak i tak nie znasz oby języków.

iluzion   5 #19 08.12.2011 20:06

@an.szop

Chyba dawno nie zaglądałeś na scipy.org ;) NumPy jest od dawna dostępne dla Pythona 3.x (2.5-3.2), SciPy też od dłuższego już czasu:

http://sourceforge.net/projects/scipy/files/scipy/0.10.0/

"Byłby ktoś chętny na napisanie czegoś podobnego do Sage w F#?"

Sage to dystrybucja Pythona z całą masą bibliotek i opcjonalnym interfejsem o podobnej ideii do notebook-ów Mathematici, tyle że uruchamianych w przeglądarce internetowej.

F# (ogólnie .NET) takich bibliotek chyba nie posiada. Nie doszukałem się jak dotąd porządnej (stabilnej, intensywnie rozwijanej) podstawowej biblioteki numerycznej, która mogłaby równać się z NumPy. Jest co prawda IMSL (również dla Pythona), ale to komercyjne rozwiązanie.

Sam F# jako język dla naukowców i inżynierów wydaje się być rzeczywiście ciekawy.

http://www.amazon.com/F-Scientists-Jon-Harrop/dp/0470242116

Wzbogacony o biblioteki mógłby spokojnie konkurować z Mathematicą. No ale... mamy już NumPy/SciPy w Visual Studio, poza tym jakiś czas temu powstał projekt Sho (http://research.microsoft.com/en-us/projects/sho/), więc motywacja do rozwijania kolejnego produktu do tego samego celu jest pewnie stosunkowo niewielka.

an.szop, może zaprezentujesz F# na blogu dp? Mało jest materiałów (szczególnie w języku polskim) na temat tego języka. Z chęcią bym poczytał.

iluzion   5 #20 09.12.2011 17:23

@Anonim (niezalogowany) | 08.12.2011 19:47

Ad 1) Proszę o wskazanie co jest "nie teges". Przy okazji radzę zapoznać się tym http://docs.python.org/tutorial/inputoutput.html

"It is good practice to use the with keyword when dealing with file objects. This has the advantage that the file is properly closed after its suite finishes, even if an exception is raised on the way. It is also much shorter than writing equivalent try-finally blocks"

Ad 2) Uruchomiłem mój skrypt dla pliku 700 MB. Wykonał się natychmiast.

"Uwierz, że szybko pozbyłbyś się Pythona"

Subiektywne wrażenia (moje i użytkowników mojego oprogramowania) są wręcz przeciwne. Benchmarki też pokazują, że Python jest aktualnie najszybszym językiem programowania (mówiąc nieprecyzyjnie).

http://shootout.alioth.debian.org/

"Aha i jak dałeś kod w Pythonie, to także daj w C# - chodzi o zrzut, żeby było widać jak wygląda."

Przecież w C# są nawiasy klamrowe, dzięki którym nie występują problemy z czytaniem kodu tak jak to ma miejsce w Pythonie, który używa wcięć. To najczęściej powtarzana "wada" Pythona!!!

"Mogłeś zrobić tak (...)"

Fragment kodu, który wkleiłem pochodzi ze strony http://www.csharp-station.com/Tutorials/lesson15.aspx

Jest to pierwszy lepszy fragment, który miał posłużyć jako przykład. To co podałeś jako skrócona wersja nie jest równoważne z podanym przykładem.

"Inna sprawa, ze mogłeś zrobić w C# tak i będzie szybciej i krócej niż w Pythonie"

Podany przeze mnie fragment otwierał, zamykał pliki i wyświetlał komunikat, jeśli pliki zostały zamknięte. Nic poza tym. Nie kopiowałem zawartości pliku! Fragment miał zaledwie kilkanaście linii, a nie zrozumiałeś co robi... aż strach pomyśleć jak byś sobie poradził z dużym projektem.

"Jest jeszcze innych parę rzeczy, co można by było poprawić w Pythonie i w C#, ale nie będę się tutaj pocić, jak i tak nie znasz oby języków."

Potwierdzam. Nie znam C#. Ty za to nie znasz C# i nie masz zielonego pojęcia o Pythonie.

@an.szop

Czekam na wpisy o F# ;)

"Sam jestem "naukowcem" i używam F# już od dłuższego czasu..."

Ja jestem inżynierem i wykorzystuje od jakiegoś czasu Pythona i jego biblioteki obliczeniowe (i nie tylko).

iluzion   5 #21 09.12.2011 17:25

Poprawka do komentarza powyżej:

Python jest aktualnie najszybszym z popularnych __dynamicznych__ języków programowania.

  #22 10.12.2011 12:16

Nice, czekam na następne wpisy ;). Mam nadzieje, że kurs pokaże jak zbudować przykładową aplikacje, albo może jakiś mini program ;)

Pozdr

Jaahquubel_   12 #23 16.12.2011 11:49

W którym odcinku kursu Pythona zaczniesz uczyć Pythona? :>
Mam system linuksowy, mam Gedit, Geany, Medit i nawet Notepad++, czekam na więcej.

kubut   17 #24 18.12.2011 23:45

I jak z kontynuacją serii? :)

Ryan   15 #25 30.12.2011 15:42

Wciąż czekam na część właściwą kursu... Poza tym pico > nano. ;]