analitics

Pages

Sunday, February 24, 2013

PP 1.6.4 is released ...

The new version : PP 1.6.4 is released and working well.

What is PP python module?

PP is a python module which provides mechanism for parallel execution of python code on SMP and clusters.

SMP - systems with multiple processors or cores;

clusters - computers connected via network;

Read more Parallel Python.

Saturday, January 26, 2013

Using Flask to build websites in Python.

The python module Flask is a small web framework.

Install the module using pip.

(my_new_env)[free-tutorials@free-tutorials ~]$ pip install Flask
Downloading/unpacking Flask
  Downloading Flask-0.9.tar.gz (481kB): 481kB downloaded
  Running setup.py egg_info for package Flask
    
    warning: no files found matching '*' under directory 'tests'
    ...
    ...
Successfully installed Flask Werkzeug Jinja2
Cleaning up...

Create the next python script and save as : flask-web.py .

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

Run the python script:

(my_new_env)[free-tutorials@free-tutorials ~]$ python flask-web.py 
 * Running on http://127.0.0.1:5000/
127.0.0.1 - - [25/Jan/2013 00:10:35] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [25/Jan/2013 00:10:36] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [25/Jan/2013 00:10:36] "GET /robots.txt HTTP/1.1" 404 -
127.0.0.1 - - [25/Jan/2013 00:10:36] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [25/Jan/2013 00:10:36] "GET /robots.txt HTTP/1.1" 404 -

You will see something like this:

Also you can try the quickstart tutorial here.

The sandboxed Python - development environments using pip and virtualenv .

Use pip and virtualenv and you can make sandboxed Python development environments.

With this tools such as pip and virtualenv you have total control over the development environment.

Why? Because if your project is developed by a team with mutiple developers then they prefer having exactly replicated environments.

Let's try some simple example commands:

1. Start your environment ( in my case is: my_new_env ).

[free-tutorials@free-tutorials ~]$ python virtualenv.py my_new_env
New python executable in my_new_env/bin/python
Installing setuptools..................done.
Installing pip.............done.

Activate your environment ( in my case is: my_new_env ).

[free-tutorials@free-tutorials ~]$ . my_new_env/bin/activate

Let's see the pip --help command :

(my_new_env)[free-tutorials@free-tutorials ~]$ pip --help
Usage: pip COMMAND [OPTIONS]
 --version                    show program's version number and exit
 -h, --help                   Show help
 -v, --verbose                Give more output
 -q, --quiet                  Give less output
 --log <filename>             Log file where a complete (maximum verbosity)
                              record will be kept
 --proxy <proxy>              Specify a proxy in the form
                              user:passwd@proxy.server:port. Note that the
                              user:password@ is optional and required only if
                              you are behind an authenticated proxy. If you
                              provide user@proxy.server:port then you will be
                              prompted for a password.
 --timeout <seconds>          Set the socket timeout (default 15 seconds)
 --exists-action <exists_action>
                              Default action when a path already exists. Use
                              this option more than one time to specify
                              another action if a certain option is not
                              available. Choices: (s)witch, (i)gnore, (w)ipe,
                              (b)ackup

Commands available:
  bundle: Create pybundles (archives containing multiple packages)
  freeze: Output all currently installed packages (exact versions) to stdout
  help: Show available commands
  install: Install packages
  search: Search PyPI
  uninstall: Uninstall packages
  unzip: Unzip individual packages
  zip: Zip individual packages

Now we will use freeze and install.

I will list all the pip packages used in my virtual environment.

(my_new_env)[free-tutorials@free-tutorials ~]$  pip freeze -l
PyOpenGL==3.0.2
PyOpenGL-accelerate==3.0.2

Put all the output in my_packages.txt file.

(my_new_env)[free-tutorials@free-tutorials ~]$ pip freeze -l > my_packages.txt

Install my packages from my_packages.txt .

(my_new_env)[free-tutorials@free-tutorials ~]$ pip install -r my_packages.txt
Requirement already satisfied (use --upgrade to upgrade): PyOpenGL==3.0.2 in 
./my_new_env/lib/python2.7/site-packages (from -r my_packages.txt (line 1))
Requirement already satisfied (use --upgrade to upgrade): PyOpenGL-accelerate==3.0.2 in 
./my_new_env/lib/python2.7/site-packages (from -r my_packages.txt (line 2))
Cleaning up...

Let's try now to find one python module : opencv .

(my_new_env)[free-tutorials@free-tutorials ~]$ pip search opencv 
remotecv                  - remotecv is an OpenCV server for facial and
                            feature recognition
ctypes-opencv             - ctypes-opencv - A Python wrapper for OpenCV using
                            ctypes
pyopencv                  - PyOpenCV - A Python wrapper for OpenCV 2.x using
                            Boost.Python and NumPy
opencv-cython             - An alternative OpenCV wrapper
CVtypes                   - Python OpenCV wrapper using ctypes
Tippy                     - another Toolbox for Image Processing in PYthon,
                            based on OpenCV

You can see where the version of python you are using installs to by running it the next python code.

>>> import sys
>>> sys.prefix
'/home/free-tutorials/my_new_env'
>>> sys.exec_prefix
'/home/free-tutorials/my_new_env'

To leave your environment just type next command: $ deactivate.

I will come with new tutorials about pip and virtualenv .

See you later.

Sunday, December 16, 2012

Simple way to create png image with an input text.

First you need to have the PIL python module and import this.

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from PIL import ImageFilter

Next will be this function.Basically will make and return one RGBA image data type.

def make_img(image, textColor, backgroundColor):
  img = image.convert("RGBA")
  img.putdata([textColor if value == 0 else backgroundColor 
                   for value in image.getdata()])
  return img

The next step is to set the text , font and the new image.

I use Arggotsc.ttf. You can use any TrueType font.

text = " Inca un script in python! "
font = ImageFont.truetype('Arggotsc.ttf', 55)
image = Image.new("1", font.getsize(text), '#FFF')

Now we can draw, add text, resize, bur the text and finally save the image.

draw = ImageDraw.Draw(image)
draw.text((0, 0), text, font=font)
image = image.resize([i for i in image.size], Image.NEAREST)
imgText = make_img(image, (200, 200, 200), (0, 0, 0, 0))
blur_img = make_img(image, (0, 0, 0), (0, 0, 0, 0))
for i in range(3): 
  blur_img = blur_img.filter(ImageFilter.BLUR)
blur_img.paste(imgText, (0, 0), imgText)
blur_img.save("text-img.png")

The result is:


See you later with another tutorial.

Tuesday, December 11, 2012

Using pip for installing and managing Python packages.

An easy_install replacement is pip.

So pip installs packages and managing Python packages.

Let's try to install packages.

$ pip install PyOpenGL_accelerate
bash: pip: command not found 

Install the pip package.

The recommended way to use pip is within virtualenv, since every virtualenv has pip installed in it automatically.

[free-tutorials@free-tutorials ~]$ 
curl -O https://raw.github.com/pypa/virtualenv/master/virtualenv.py
...
[free-tutorials@free-tutorials ~]$ python virtualenv.py my_new_env
New python executable in my_new_env/bin/python
Installing setuptools............................done.
Installing pip.....................done.
[free-tutorials@free-tutorials ~]$ . my_new_env/bin/activate
(my_new_env)[free-tutorials@free-tutorials ~]$ pip --help

Let's try again with PyOpenGL and PyOpenGL_accelerate packages.

(my_new_env)[free-tutorials@free-tutorials ~]$
 pip install PyOpenGL PyOpenGL_accelerate
Downloading/unpacking PyOpenGL
  Downloading PyOpenGL-3.0.2.tar.gz (891kB): 891kB downloaded
  Running setup.py egg_info for package PyOpenGL
      ....
      

Now we can test this two packages.First is PyOpenGL.

(my_new_env)[free-tutorials@free-tutorials ~]$ python 
Python 2.7.3 (default, Dec  6 2012, 03:02:26) 
[GCC 4.3.2 20081105 (Red Hat 4.3.2-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenGL
>>> dir(OpenGL)

...and PyOpenGL_accelerate:

(my_new_env)[free-tutorials@free-tutorials ~]$ python 
Python 2.7.3 (default, Dec  6 2012, 03:02:26) 
[GCC 4.3.2 20081105 (Red Hat 4.3.2-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenGL_accelerate
>>> dir(OpenGL_accelerate)

This is working only on my_new_env.

That is all for now. I will try to do some examples with this packages.

Sunday, October 14, 2012

About new release - Python 3.3.0

The new Python 3.3.0 was released on September 29th, 2012.

It's been two weeks since it was launched last version of python and I don't have found complaints about this release.

We can read more about updates and changes made by developers here.

What I think it's more significantly to this version:

  • The new "faulthandler" module that helps diagnosing crashes
  • The new "unittest.mock" module
  • The new "ipaddress" module
  • The "sys.implementation" attribute
  • A policy framework for the email package, with a provisional (see PEP 411) policy that adds much improved unicode support for email header parsing
  • A "collections.ChainMap" class for linking mappings to a single unit
  • Wrappers for many more POSIX functions in the "os" and "signal" modules, as well as other useful functions such as "sendfile()"
  • Hash randomization, introduced in earlier bugfix releases, is now switched on by default
  • A C implementation of the "decimal" module, with up to 120x speedup for decimal-heavy applications
  • The import system (__import__) is based on importlib by default
  • The new "lzma" module with LZMA/XZ support
  • PEP 397, a Python launcher for Windows
  • PEP 405, virtual environment support in core

Let's see how to working the new Python 3.3.0

First download it , unzip and install it. See next:

/Python-3.3.0 $ ./configure 
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for --enable-universalsdk... no
checking for --with-universal-archs... 32-bit
checking MACHDEP... linux
checking for --without-gcc... 

The next step is ...

$ make all

And finally ...

# su 
# ./python setup.py build
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers

Python build finished, but the necessary bits to build these modules were not found:
_bz2               _dbm               _gdbm           
_lzma              _sqlite3           _ssl            
_tkinter           readline                           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

I will use it without this modules, until I find a way to fix it.

$ ./python 
Python 3.3.0 (default, Oct 14 2012, 21:42:00) 
[GCC 4.4.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import ipaddress