Comments (5)
Hi Guys, while I think it's a nice to have feature in an application. But I don't agree that it should be solved through this library.
The library is responsible for only populating the system's environment variable with what is available in .env. It would be responsibility of code responsible for consuming those environment variable to handle the missing variables.
In my case, i use django-environ to read the environment variable and it sort of handles missing variables pretty nice.
from python-dotenv.
I like the idea of having mandatory variables, but I don't like using a .env.example (or .env.sample) like that.
I try to make them a ready to use example, not a simple enumeration of empty variables.
When working on PHP projects I use vlucas/phpdotenv
and it implements the idea this way:
<?php
// directory to look for an .env file
$dotenv = new Dotenv\Dotenv(__DIR__);
// load .env file (overloading existing variables)
$dotenv->overload();
// make some variables mandatory, trows error if not present
$dotenv->required(['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']);
I would suggest to implement like this for python-dotenv:
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path, required=('DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'))
But this can be already achieved by using python-dotenv
with python-decouple
, which I always use together, python-dotenv
takes care of loading .env
files, and python-decouple
for reading the env and aplying castings or validations.
from python-dotenv.
I try to make them a ready to use example, not a simple enumeration of empty variables.
We can use comments that define the variable usage. Its always a good thing to let other team members consciously modify their own .env file based on the sample instead of simply copying from the sample.
But this can be already achieved by using python-dotenv with python-decouple
Hmm interesting..after reading python-decouple docs, it seems to do the same things as python-dotenv with a bit more features such as throwing an error if not found or setting a default if not found, casting to a type.
from python-dotenv.
I think python-decouple will throw an error only if we try to fetch a missing variable not when the server/app bootstraps
Providing required variables as a tuple list won't scale if we have many required variables.
load_dotenv(dotenv_path, required=('DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'))
from python-dotenv.
I use this for checking environment variables: https://github.com/humangeo/preflyt
from python-dotenv.
Related Issues (20)
- Illustrate usage as a pre-commit hook additional dependency
- Two underscores w/ load_dotenv() == None HOT 3
- cli.py functions names collide with built-ins
- easily allow sourcing .env-file in bash HOT 2
- dotenv module not found in python 3.11 version HOT 2
- The .env file opens writable by default HOT 2
- How to get openai api_key from the local environment [if api_key is already set in the environment ] HOT 1
- OSS-Fuzz Integration HOT 3
- Consider MIT license HOT 1
- Consider allowing directory to search for in `find_dotenv` HOT 1
- Cannot import dotenv module when python file runs by java. HOT 1
- Connection string in .env-file not read or parsed properly HOT 17
- AssertionError when attempting to locate dotenv file HOT 4
- cannot use pipx installed python-dotenv on Mac HOT 7
- Support for dumping to a .env file?
- [Question] Any significant cost to calling load_dotenv() multiple times?
- Too many open files
- Configure `dotenv_values`'s search space
- How to disable python-dotenv
- Trying to get in touch regarding a security issue HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-dotenv.