Search code examples
pythondjangobuildoutegg

Install python egg without launching buildout


I have installed my Django app with buildout and now I would like to add one more eggs.

But if I just add the egg in my buildout, and launch buildout, it will update all my eggs, which I don't want as I'm not sure it will work well with upgraded versions of other eggs.

I was wondering if there is a way to just add one egg in my app without launching buildout. My app is on shared hosting, so I dont have access to everything.


Solution

  • Just add your new egg to the buildout, and run buildout with -N:

      -N
    
        Run in non-newest mode.  This is equivalent to the assignment
        buildout:newest=false.  With this setting, buildout will not seek
        new distributions if installed distributions satisfy it's
        requirements.
    

    This means eggs will not be upgraded.

    You may want to pin your egg versions; add a [versions] section where you name all your egg versions, and add a versions = versions entry in the [buildout] section. Add newest = false and allow-picked-versions = false as well to enforce the policy and require that all eggs have an entry in the versions section:

    [buildout]
    # other options
    versions = versions
    allow-picked-versions = false
    newest = false
    
    [versions]
    Django = 1.5.5
    South = 0.8.2
    # etc.
    

    Running with allow-picked-versions = false results in an error every time buildout comes across an egg you did not pin yet; keep adding eggs to the [versions] section until all eggs are pinned.