Skip to content

cirnatdan/pbundler

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Bundler

Simplifies virtualenv and pip usage.

Aims to be compatible with all existing projects already carrying a "requirements.txt" in their source.

Inspired by http://gembundler.com/

Howto

  • easy_install pbundler
  • cd into your project path
  • Run pbundle. It will install your project's dependencies into a fresh virtualenv.

To run commands with the activated virtualenv:

pbundle exec bash -c 'echo "I am activated. virtualenv: $VIRTUAL_ENV"'

Or, for python programs:

pbundle py ./debug.py

If you don't have a requirements.txt yet but have an existing project, try this:

pip freeze > requirements.txt

If you start fresh, try this for a project setup:

mkdir myproject && cd myproject
git init
pbundle init

Instructions you can give your users:

git clone git://github.com/you/yourproject.git
easy_install pbundler
pbundle

If you rather like pip, and you're sure your users already have pip:

git clone git://github.com/you/yourproject.git
pip install pbundler
pbundle

Making python scripts automatically use pbundle py

Replace the shebang with "/usr/bin/env pbundle-py". Example:

#!/usr/bin/env pbundle-py
import sys
print sys.path

WSGI/Unicorn example

start-unicorn.sh:

#!/bin/bash
cd /srv/app/flaskr
PYTHONPATH=/srv/app/wsgi exec pbundle exec gunicorn -w 5 -b 127.0.0.1:4000 -n flaskrprod flaskr:app

Custom environment variables

If you need to set custom ENV variables for the executed commands in your local copy, do this:

echo "DJANGO_SETTINGS_MODULE='mysite.settings'" >> .pbundle/environment.py

TODO

  • Build inventory from what is installed, instead of requirements.last file
  • Handle failed egg installs
  • Really remove all no longer needed packages from virtualenv
  • Reorganize library code

Packages

No packages published

Languages

  • Python 100.0%