Archive

Author Archive

PyScripter: a very nice small IDE for Windows

April 8, 2014 Leave a comment

I found a very nice small Python IDE for Windows called PyScripter.

PyScripter is a free and open-source Python Integrated Development Environment (IDE) created with the ambition to become competitive in functionality with commercial Windows-based IDEs available for other languages. Being built in a compiled language is rather snappier than some of the other Python IDEs and provides an extensive blend of features that make it a productive Python development environment.” (source)

The install file is less than 5 MB and PyScripter provides all the features you want from a modern IDE: syntax highlight, run code and see the output, code completion, built-in Python shell, debugger, etc.

Here is a youtube video for beginners that shows first how to install Python on Windows, then presents PyScripter.

Categories: python, windows Tags: , ,

imgur album downloader

April 5, 2014 Leave a comment

This little script can download all the images in an imgur gallery.

Categories: python Tags: , ,

Improving the sidebar of /r/python

March 21, 2014 Leave a comment

In the sidebar of /r/python, there was a very unpythonic infinite loop for a long time:

while 1:
    # do something

Today I sent a message to the moderators and they changed it:

while

Update: I got a message from them.

Categories: python Tags: , , ,

get the command pip3

March 15, 2014 Leave a comment

Problem
You have Python 2 and Python 3 on the same machine. You want to install a package that requires Python 3. You cannot use the command “pip” because it will install the package as if it were written in Python 2. You want a “pip3” command.

Solution
I found the solution here.

Steps:

$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ sudo python3 get-pip.py

Now you have a “pip3” command that you can use to install Python 3 libraries.

Categories: python Tags: ,

installing pgmagick

March 4, 2014 Leave a comment

pgmagick is yet another boost.python based wrapper for GraphicsMagick.

GraphicsMagick is the swiss army knife of image processing. …it provides a robust and efficient collection of tools and libraries which support reading, writing, and manipulating an image in over 88 major formats including important formats like DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM, and TIFF.” (source)

Here I found an interesting blog post on how to remove image backgrounds with a Python script (comments on it here). The script uses the pgmagick library.

Problem
How to install pgmagick and GraphicsMagick? That is, the following line shouldn’t drop any error :)

>>> import pgmagick
>>>

Solution
It may not be an optimal solution because it installed on my machine LOTS OF extra packages… However, it worked for me.

$ sudo add-apt-repository ppa:dhor/myway
$ sudo apt-get update
$ sudo apt-get install graphicsmagick

$ sudo apt-get install libmagick++-dev
$ sudo apt-get install libboost-python-dev
$ sudo pip install pgmagick -U

Usage example
scale example (copied from here):

>>> from pgmagick import Image, FilterTypes
>>> im = Image('input.jpg')
>>> im.quality(100)
>>> im.filterType(FilterTypes.SincFilter)
>>> im.scale('100x100')
>>> im.sharpen(1.0)
>>> im.write('output.jpg')

Links

Categories: python, ubuntu Tags: ,

Jinja2 example for generating a local file using a template

February 25, 2014 Leave a comment

Here I want to show you how to generate an HTML file (a local file) using a template with the Jinja2 template engine.

Python source (proba.py)

#!/usr/bin/env python

import os
from jinja2 import Environment, FileSystemLoader

PATH = os.path.dirname(os.path.abspath(__file__))
TEMPLATE_ENVIRONMENT = Environment(
    autoescape=False,
    loader=FileSystemLoader(os.path.join(PATH, 'templates')),
    trim_blocks=False)


def render_template(template_filename, context):
    return TEMPLATE_ENVIRONMENT.get_template(template_filename).render(context)


def create_index_html():
    fname = "output.html"
    urls = ['http://example.com/1', 'http://example.com/2', 'http://example.com/3']
    context = {
        'urls': urls
    }
    #
    with open(fname, 'w') as f:
        html = render_template('index.html', context)
        f.write(html)


def main():
    create_index_html()

########################################

if __name__ == "__main__":
    main()

Jinja2 template (templates/index.html)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Proba</title>
</head>
<body>
<center>
    <h1>Proba</h1>
    <p>{{ urls|length }} links</p>
</center>
<ol align="left">
{% set counter = 0 -%}
{% for url in urls -%}
<li><a href="{{ url }}">{{ url }}</a></li>
{% set counter = counter + 1 -%}
{% endfor -%}
</ol>
</body>
</html>

Resulting output
If you execute proba.py, you will get this output:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Proba</title>
</head>
<body>
<center>
    <h1>Proba</h1>
    <p>3 links</p>
</center>
<ol align="left">
<li><a href="http://example.com/1">http://example.com/1</a></li>
<li><a href="http://example.com/2">http://example.com/2</a></li>
<li><a href="http://example.com/3">http://example.com/3</a></li>
</ol>
</body>
</html>

You can find all these files here (GitHub link).

Categories: python Tags: , ,

Using Go’s present with Python code snippets

February 14, 2014 Leave a comment

A few weeks ago I started to learn Go (aka Golang). I enjoy it very much, I think it’s a very nice and logical language. It is similar to Python in several aspects, so it’s not difficult to start after Python.

If you watch some videos about Go, you will notice that most presentations are made with the same presentation software. And the most interesting part is that you can include Go code snippets in the presentation that you can execute with a button click. The output is also shown. That is, if you want to show some code, you don’t need to jump around between a terminal and the presentation; everything is at one place.

Example: http://www.youtube.com/watch?v=f6kdp27TYZs at 6:57.

Problem
You want to do the same with Python code snippets. You want to use this presentation system and you want to embed runnable Python codes in it.

Solution
These presentations are done with the Go package called present. Here I won’t explain how to set up Go on your machine, I leave it as an exercise (link1, link2). Once you have Go installed on your machine, install the present package:

$ go get code.google.com/p/go.talks/present

The good news is that present is prepared to run scripts (whose first line starts with a shebang). The file that is responsible for executing Go programs and eventually Python scripts is here: $GOPATH/src/code.google.com/p/go.tools/playground/socket/socket.go.

However, I found a bug in socket.go (reported here). The last line of the function shebang() must be changed (Update 20140227: my patch has been integrated since then, so if you install the present package, you’ll have the correct version):

old (buggy):

return fs[0], fs[1:]

new (corrected):

return fs[0], fs

After this compile present. Enter the directory $GOPATH/src/code.google.com/p/go.talks/present and execute the command “go install“. It will place the binary “present” in the folder $GOPATH/bin.

Try it out
I put a simple demo presentation here: https://github.com/jabbalaci/go-present-for-python . Download the files and launch “present” in the directory where the downloaded files are. Visit http://127.0.0.1:3999/ and check out the demo that contains a Python and a Go code snippet. Don’t forget to click on the “Run” buttons :)

Update (20140215) — convert presentation to PDF
You can convert your presentation to PDF easily. Navigate to the first slide in Firefox (I prefer this browser) and go to File -> Print…. Select “print to file”, change the page orientation to “landscape” and hide all the headers and footers (blank). Firefox will print every slide, each slide on a new page.

Update (20140218)
This blog post got included in Go Newsletter Issue #21 (Feb. 2014). Awesome!

Update (20140331)
Right now I’m at the Write the Docs conference in Budapest, Hungary. Today I gave a lightning talk with the title “Using Go’s present with Python code snippets”. The presentation converted to PDF is here.

Categories: python Tags: , ,

DARPA Open Catalog

February 5, 2014 Leave a comment

The Defense Advanced Research Projects Agency (DARPA) published its Open Catalog, a website that collects a curated list of DARPA-sponsored software and peer-reviewed publications.

The list contains several Python projects.

Categories: python Tags: ,

MoviePy: script-based movie editing

January 25, 2014 Leave a comment

I haven’t tried it yet but it looks awesome.

MoviePy is a Python module for script-based movie editing, which enables basic operations (cuts, concatenations, title insertions) to be done in a few lines. It can also be used for advanced compositing and special effects.”

Example: putting some clips together:

import os
from moviepy.editor import *
files = sorted( os.listdir("clips/") )
clips = [ VideoFileClip('clips/%s'%f) for f in files]
video = concatenate(clips, transition = VideoFileClip("logo.avi"))
video.to_videofile("demos.avi",fps=25, codec="mpeg4")

The author of MoviePy shows how to manipulate GIF files with MoviePy: http://zulko.github.io/blog/2014/01/23/making-animated-gifs-from-video-files-with-python/.

Categories: python Tags: ,
Follow

Get every new post delivered to your Inbox.

Join 63 other followers