Skip to main content

Wrapper to run programs with different env

Project description

https://img.shields.io/travis/onjin/runenv.svg https://img.shields.io/pypi/v/runenv.svg https://img.shields.io/badge/license-New%20BSD-blue.svg https://img.shields.io/pypi/dm/runenv.svg

Wrapper to run programs with modified environment variables loaded from given file. You can use runenv to manage your app settings using 12-factor principles.

You can use same environment file with runenv and with docker using env-file parameter

Features

CLI:

  • CLI tool to load environment variables from given file

Python API:

  • load variables from .env or given file

  • load only variables with given prefix

  • prefix can be stripped during loading

  • detect whether environment was loaded by runenv CLI

  • force load even runenv CLI was used

  • search_parent path to given level for env_file

Installation

In order to install use pip:

$ pip install -U runenv

Usage

Run from shell:

$ runenv env.development ./manage.py runserver

example env.development file:

BASE_URL=http://127.0.0.1:8000
DATABASE_URI=postgres://postgres:password@localhost/dbname
SECRET_KEY=y7W8pbRcuPuAmgTHsJtEpKocb7XPcV0u

# email settings
EMAIL_HOST=smtp.mandrillapp.com
EMAIL_PORT=587
EMAIL_HOST_USER=someuser
EMAIL_HOST_PASSWORD=hardpassword
EMAIL_FROM=dev@local.host
EMAIL_USE_TLS=1

Python API

load_env(env_file=’.env’, prefix=None, strip_prefix=True, force=False, search_parent=0)

Loads environment from given env_file`, default .env.

Options:

  • env_file - relative or absolute path to file with environment variables; default .env

  • prefix - prefix to match variables f.i. APP_

  • strip_prefix - whether to strip prefix during environment loading or not; default True

  • force - load env_file, event runenv CLI command was used; default False

  • search_parent - search env file in parent directories till given level; default 0

If prefix provided only variables started with given prefix will be loaded to environment with keys truncated from prefix. To preserver prefix, pass strip_prefix=False.

Example:

$ echo 'DJANGO_SECRET_KEY=bzemAG0xfdMgFrHBT3tJBbiYIoY6EeAj' > .env

$ python
>>> import os
>>> from runenv import load_env
>>> load_env(prefix='DJANGO_')
>>> 'DJANGO_SECRET_KEY' in os.environ
False
>>> 'SECRET_KEY' in os.environ
True
>>> load_env(prefix='DJANGO_', strip_prefix=False)
>>> 'DJANGO_SECRET_KEY' in os.environ
True

Notice: Environment will be not loaded if command was fired by runenv wrapper unless you use force=True parameter

Wrapper runenv sets _RUNENV_WRAPPED=1 variable and load_env does not load variables then.

Example:

$ echo 'DJANGO_SECRET_KEY=bzemAG0xfdMgFrHBT3tJBbiYIoY6EeAj' > .env

$ python
>>> import os
>>> from runenv import load_env
>>> os.environ['_RUNENV_WRAPPED'] = '1'
>>> load_env()
>>> 'DJANGO_SECRET_KEY' in os.environ
False
>>> load_env(force=True)
>>> 'DJANGO_SECRET_KEY' in os.environ
True

Django integration

To use load_env with Django, put in manage.py and wsgi.py code:

from runenv import load_env
load_env()

Similar projects

History

0.4.0 (2016-08-08)

  • add support for search_parent option

0.3.1 (2016-06-21)

  • add support for quoted values

0.3.0 (2016-02-14)

  • change Development Status to 5 - Production/Stable

0.2.5 (2015-11-30)

  • do not look for executable as absolute path

0.2.4 (2015-07-06)

  • skip load_env if env file does not exists

0.2.3 (2015-06-26)

  • support to run programs from PATH

0.2.2 (2015-06-16)

  • fix compatibility with python3

0.2.1 (2015-06-16)

  • add strip_prefix option to load_env

0.2.0 (2015-06-16)

  • add load_env (python api)

0.1.4 (2015-06-15)

  • Check if file to run exists and is executable

0.1.3 (2015-06-01)

  • Support for env file comments by ‘#’

0.1.2 (2015-06-01)

  • Return code from runned command

0.1.1 (2015-05-31)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runenv-0.4.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runenv-0.4.0-py2.py3-none-any.whl (7.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file runenv-0.4.0.tar.gz.

File metadata

  • Download URL: runenv-0.4.0.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for runenv-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ddd6d90b3d4d29a8b64d52be27984189d77f37941a117bcd26aef5ed9429d7b3
MD5 9bb47252e701888356a97eb1e1e6a18e
BLAKE2b-256 4e68ce4c05601ee743e7737227970d32f3d6a0dd8ed4ea52b9d9176c432f821b

See more details on using hashes here.

File details

Details for the file runenv-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for runenv-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 22e70c26b01a7d7920be76bd6faa74f5dfa2f08442902f1ab4a19b8434ae5a98
MD5 5eb0a37928f19bc3ab4277cc14994b23
BLAKE2b-256 090643c9cabf4ec51c85433c2b258a65762cac634aa335208310737706c83770

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page