Belt is a simple PyPI proxy. Any packages that exist locally will be installed direct from disk; non-existent packages will be installed from PyPI and stored locally for future use.
The latest version is always available at github.com/rob-b/belt
To install:
easy_install belt
or:
pip install belt
Development uses git-flow naming conventions. Also be sure to run:
ln -fs "$(pwd)/pre-push.sh" .git/hooks/pre-push
to install the git pre-push hook that refuses to push to develop or master when all tests do not pass.
Create a config file setting local_packages to wherever you want to store your locally cached packages:
cat << EOF > production.ini
[app:main]
use = egg:belt
pyramid.reload_templates = false
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
jinja2.directories = belt:templates
jinja2.filters =
route_url = pyramid_jinja2.filters:route_url_filter
local_packages = /vagrant/pypi
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 6543
[loggers]
keys = root, belt
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = WARN
handlers = console
[logger_belt]
level = WARN
handlers =
qualname = belt
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
EOF
Then run with `pserve`:
pserve production.ini
You can now install packages via your local proxy:
pip install -i http://localhost:6543/simple/ zest.releaser