Overview

buildout.locallib use egg-packages installed on site-packages folder.

zc.buildout check package installation by zc.buildout.easy_install.Installer that exclude /path/to/site-packages folder path for checking.

When 'site-packages' folder include some easy-installed packages, We want to re-use these packages in some cases.

Features

  • Extends zc.buildout functionality to search installed packages.
  • create dummy '.egg-info' / '.egg-link' for specified packages.

Using sample: using buildout.locallib extension

site-packages include some eggs:

$ ls /path/to/site-packages
easy-install.pth
pip-0.6.3-py2.6.egg/
pastedeploy-1.3.3-py2.6.egg/
pastescript-1.7.3-py2.6.egg/
paste-1.7.4-py2.6.egg/
setuptools-0.6c11-py2.6.egg
setuptools.pth

write buildout.cfg:

[buildout]
parts = foo

[foo]
recipe = zc.recipe.egg
eggs =
    PasteScript

run bootstrap and buildout:

$ python bootstrap.py
$ bin/buildout -U
...

list eggs dir:

$ ls eggs
zc.recipe.egg-1.2.3b2-py2.6.egg
pastescript-1.7.3-py2.6.egg
pastedeploy-1.3.3-py2.6.egg
paste-1.7.4-py2.6.egg

(clean-up):

$ rm -R eggs

Now update buildout.cfg to use buildout.locallib extension:

[buildout]
parts = foo
extensions = buildout.locallib
...

And run buildout again:

$ bin/buildout -U
...

Check your eggs folder again:

$ ls eggs
buildout.locallib-0.0.1-py2.6.egg
zc.recipe.egg-1.2.3b2-py2.6.egg

If package exists at site-packages folder, now using installed version packages.

Using sample: specified dummy package information

site-packages include some libraries, but they are not installed by easy_insttall:

$ ls /path/to/site-packages
...
feedparser.py
...

write buildout.cfg with locallibs key and section:

[buildout]
parts = foo
newest = false #if you won't want to check newest version (network-access)
extensions = buildout.locallib
locallibs = locallibs

[foo]
recipe = zc.recipe.egg
eggs =
    feedparser

[locallibs]
feedparser = feedparser==4.1

locallibs section require (dummy name) = (pkg name)==(version) style key-value pairs. Then, buildout.locallib create dummy feedparser-4.1.egg-info into the develop-eggs directory. In this way, setuptools recognizes that a 'feedparser' is installed and doesn't perform downloading.

If target package have .egg-info file/directory, you don't need to write a version like below:

[locallibs]
PIL = PIL

But, if you omit a version for no-egg-info package, buildout.locallib can't recognize package version, then it'll cause DistributionNotFound exception. If you want to avoid this exception, you should set locallibs_check = false in buildout section.

Options

locallibs
A dictionary mapping package names to skip installing distribution that was installed on python's site-packages directory already. This can be used to specify a set of distribution versions independent of other requirements.
locallibs_check
default is 'true'. buildout.locallib check distribution existing on site-packages and raise exception if distribute was not found. If set 'false', skip check.

Requirements

  • Python 2.4 or later

Setup

Write buildout.cfg with extensions = buildout.locallib:

[buildout]
parts = foo
extensions = buildout.locallib
...

ToDo

  • Write tests.
  • cleanup develop-eggs folder.

History

0.3.0 (2011-3-31)

  • Add: locallibs_check option is now available.

0.2.0 (2010-7-12)

  • Add: create dummy '.egg-info' / '.egg-link' for specified packages.

0.1.0 (2010-6-27)

  • first release
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.