Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Saturday, October 11, 2008

Creating new python project

How to set up development environment for new python project.

Some of the tools I use:

  • virtualenv - creates self contained python enviroment (you can even ignore systems site-packages). Its usefull for installing new python libraries or eggs that you may not want to install systemwide.
  • paster - (from pastescript)it helps you with crating project skeleton (including setup.py and eggs config). If this is wsgi project you can also use it for deploying.
  • nose - my preferred python testing framework. One of its biggest benefits is that it works with existing unittest tests and doctests.
So tipicly for crating new project cli session would look like:


$ cd py.virt/
py.virt$ virtualenv --no-site-packages Foo
(...)
py.virt$ cd Foo && source bin/activate
(Foo)$
(Foo)$ easy_install nose
Searching for nose
Reading http://pypi.python.org/simple/nose/
(...)
(Foo)$ easy_install pastescript
Searching for pastescript
Reading http://pypi.python.org/simple/pastescript/
(...)
(Foo)$
(Foo)$ paster create Foo
Selected and implied templates:
PasteScript#basic_package A basic setuptools-enabled package

Variables:
egg: Foo
package: foo
project: Foo
(...)
(Foo)$
(Foo)$ cd Foo
(Foo)$ python setup.py develop # creates registers with python so that ' import Foo works'
running develop
running egg_info
writing Foo.egg-info/PKG-INFO
(...)


Now our package should be created and registered with python. Lets see:

(Foo)$ python
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo
>>> dir(foo)
['__builtins__', '__doc__', '__file__', '__name__', '__path__']
>>>


Now we can start coding.