aroooo
aroooo

Reputation: 5086

Pipenv: Multiple Environments

Right now I'm using virtualenv and just switching over to Pipenv. Today in virtualenv I load in different environment variables and settings depending on whether I'm in development, production, or testingby setting DJANGO_SETTINGS_MODULE to myproject.settings.development, myproject.settings.production, and myproject.settings.testing.

I'm aware that I can set an .env file, but how can I have multiple versions of that .env file?

Upvotes: 13

Views: 8118

Answers (2)

Otoris
Otoris

Reputation: 307

I'm far from a Python guru, but one solution I can think of would be to create Pipenv scripts that run shell scripts to change the PIPENV_DOTENV_LOCATION and run your startup commands.

Example Pipfile scripts:

[scripts]
development = "./scripts/development.sh"

development.sh Example:

#!/bin/sh
PIPENV_DOTENV_LOCATION=/path/to/.development_env pipenv run python test.py

Then run pipenv run development

Upvotes: 10

A. J. Parr
A. J. Parr

Reputation: 8026

You should create different .env files with different prefixes depending on the environment, such as production.env or testing.env. With pipenv, you can use the PIPENV_DONT_LOAD_ENV=1 environment variable to prevent pipenv shell from automatically exporting the .env file and combine this with export $(cat .env | xargs).

export $(cat production.env | xargs) && PIPENV_DONT_LOAD_ENV=1 pipenv shell would configure your environment variables for production and then start a shell in the virtual environment.

Upvotes: 5

Related Questions