Python

From Rootnode

Jump to: navigation, search

Contents

File:python-logo-master-v3-TM.png

Wirtualne środowiska Pythona

Na Rootnode nie ma dostępnych wszystkich bibliotek Pythona, ale w razie potrzeby doinstalowania jakiejś biblioteki można skorzystać z wirtualnego Pythona za pomocą opisanych poniżej narzędzi.

Istnieje możliwość utworzenia drzewa modułów dla Pythona. Lokalne moduły i dodatki do Pythona są dostępne w naszej własnej strukturze katalogów, natomiast lokalne składniki są podlinkowane do właściwych plików znajdujących się w systemowym drzewie.

virtualenv

Virtualenv to stworzone przez Iana Bickinga narzędzie służące do tworzenia odizolowanych środowisk Pythona. Virtualenv jest następcą workingenv oraz rozszerzeniem dla virtual-pythona.

Przygotowanie

Tworzenie wirtualnego środowiska sprowadza się do wykonania poniższego polecenia:

$ virtualenv ENV

ENV to bezwzględna ścieżka do katalogu w którym zostanie zainstalowane wirtualne środowisko. Lokalizacja jest dowolna (wyjątek stanowi deployment z użyciem skryptów CGI), a ilość posiadanych przez nas środowisk jest (teoretycznie) nieograniczona.

Należy zwrócić uwagę na to, że tak stworzone wirtualne środowisko korzysta z globalnego Pythona (obecnie jest to wersja 2.4). Jeżeli chcemy skorzystać z nowszego Pythona dodajemy odpowiedni parametr:

$ virtualenv -p python2.6 ENV

Możemy także stworzyć środowisko bez systemowych (standardowych) pakietów, co może być przydatne w przypadku konfliktów wersji instalowanych paczek:

$ virtualenv --no-site-packages ENV

Użycie

Tak powstałe środowisko możemy wykorzystać na trzy sposoby.

  • Najprostszym z nich jest aktywacja:
[bongo@stallman ~]$ source ENV/bin/activate
(ENV)[bongo@stallman ~]$ 

Proszę zwrócić uwagę na to, że poprawna aktywacja skutkuje w poprzedzeniu znaku zachęty (prompta) nazwą środowiska.

Aktywację musimy wykonać za każdym razem kiedy chcemy skorzystać z wirtualnego Pythona

Od teraz wykonując python będziemy uruchamiać interpreter z naszej lokalnej konfiguracji, oraz będzie można swobodnie instalować nowe moduły i dodatki, które będą dostępne tylko dla nas!

Razem z virtualenv instalowany jest pakiet Setuptools, dzięki czemu w bardzo prosty sposób możemy doinstalowywać nowe paczki, np:

(ENV)$ easy_install pip

Kiedy zakończyliśmy już pracę z naszym wirtualnym Pythonem, możemy środowisko wyłączyć:

(ENV)$ deactivate
  • Możemy także bezpośrednio instalować biblioteki przy pomocy easy_install:
$ ENV/bin/easy_install pip
  • A skrypty uruchamiane przy pomocy "naszego" interpretera będą z tych bibliotek korzystać
$ ENV/bin/python skrypt.py

virtualenvwrapper

Virtualenvwrapper to stworzone przez Douga Hellmanna narzędzie to zarządzania wirtualnymi środowiskami. Przydatne zwłaszcza wtedy, gdy pracujemy na większej ich ilości. Więcej informacji znajdziemy na oficjalnej stronie virtualenvwrappera

Deployment aplikacji sieciowych

Jeżeli chcemy serwować swoje skrypty w sieci mamy kilka rozwiązań. Oczywiście każde ma swoje plusy i minusy, które po krótce postaramy się omówić.

mod_wsgi

Obecnie, preferowaną metodą serwowania skryptów Pythona na Rootnode jest moduł Apache'a - mod_wsgi. Pamiętajmy, aby wszystkie nasze działania miały miejsce w strukturze katalogów ~/www.

Tworzymy w wybranym katalogu plik .htaccess:

AddHandler wsgi-script .wsgi

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ aplikacja.wsgi/$1 [QSA,PT,L]

Niestety, szybkość i niezawodność tej metody obarczona jest wymaganiem korzystania z globalnego Pythona, w wersji 2.4.

W przypadku brakujących paczek można poinformować WSGI o tym, gdzie zostały one przez nas zainstalowane (katalog site-packages w wirtualnym środowisku) dodając następujące linie na samym początku skryptu WSGI:

import sys 
import site 

# Remember original sys.path.
prev_sys_path = list(sys.path) 

# Add new site-packages directory.
site.addsitedir('ENV/lib/python2.4/site-packages')

# Reorder sys.path so new directories at the front.
new_sys_path = [] 
for item in list(sys.path): 
    if item not in prev_sys_path: 
        new_sys_path.append(item) 
        sys.path.remove(item) 
sys.path[:0] = new_sys_path

Image:Warning.png

Tak dodane pakiety powinny być instalowane na wirtualnym środowisku z Pythonem zgodnym (pod względem wersji) z Pythonem globalnym (obecnie Pythonem 2.4). W innym wypadku powinniśmy się liczyć z niepożądanym działaniem naszej aplikacji.

Więcej informacji o powyższym sposobie znajdziemy na stronach oficjalnej dokumentacji mod_wsgi.

mod_fastcgi

Zaletą tego rozwiązania jest, dowolność w wyborze wersji interpretera, czyli przykładowo możemy skorzystać z Pythona 2.6. Instrukcje znajdziemy na stronach wiki dotyczących zewnętrznego serwera FastCGI.

mod_python

Możemy korzystać także z mod_python. Instrukcje i uwagi podobne co przy preferowanym mod_wsgi. Główna różnica to zawartość pliku .htaccess:

SetHandler python-program
PythonHandler <handler.czyli.moduł.pythona>
SetEnv <nazwa-zmiennej> <wartość-zmiennej>
PythonDebug On

CGI

"Common gateway interface" to metoda uruchamiania skryptów, która niegdyś była najpopularniejszą, teraz wyparta przez nowsze/szybsze/bezpieczniejsze technologie. Prosimy używać z rozwagą!

  • Do katalogu ze struktury www zawierającego skrypty Pythona dołączamy plik .htaccess:
Options +ExecCGI
AddHandler cgi-script .py
  • Pamiętajmy, że skrypty powinny rozpoczynać się od ścieżki do binarki pythona.
#!/usr/bin/env python

Zaletą korzystania z tego rozwiązania jest możliwość uruchamiania skryptów przez własny interpreter. Bez problemu możemy także skorzystać z własnego wirtualnego środowiska Pythona, pamiętając o tym, że wirtualne środowisko musi znajdować się w strukturze katalogów ~/www:

#!ENV/bin/python

Inne

W ostateczności, kiedy powyższe metody się nie sprawdziły, możemy uruchomić swój własny serwer (np. lighttpd na Torvaldsie), a następnie przekierować ruch www na port, na którym go uruchomiliśmy.

Frameworki webowe

Python to język, na którym zbudowano bardzo wiele, różnych frameworków. Oto najpopularniejsze:

Django

Django to najpopularniejszy i prawdopodobnie najlepszy framework webowy stworzony w Pythonie. Wszelkie informacje o Django dostępne są na stronie: Django

Zope

Zope to tzw. "duży" serwer aplikacji napisany w Pythonie. Informacje na temat uruchamiania Zope na Rootnode dostępne są na stronie: Zope

Przewodnik po Rootnode

Nasze strony są oparte o system wiki, co znaczy, że każdy użytkownik może edytować dowolną stronę.
Treści tutaj zawarte mogą być nieaktualne i niewłaściwe. Nie bierzemy odpowiedzialności za ewentualne szkody.

Zobacz ostatnie zmiany.

Pierwsze kroki z Rootnode

Bazy danych


Poczta

Domena i system DNS

Vhost, strona www

Nieuporządkowane

© ITspec Wszelkie prawa zastrzeżone. | Wiki | Status | Support | Planeta | Fortunki | Kontakt
Szukasz oferty indywidualnej lub specjalistów IT? Zobacz naszą stronę domową i skontaktuj się z nami.
Personal tools