file structure:
|_ login.py
|_ main.py
|_ .env
login.py
has function called login()
that logs user in and sets token in .env file. .env
file gets updated, but when I try to access the new updated token in main.py
it gives me old token.
login.py:
import os
from dotenv import load_dotenv, set_key
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(dotenv_path)
creds = {
'token': os.environ.get('TOKEN', ''),
'username': os.environ.get('USERNAME', ''),
'password': os.environ.get('PASSWORD', ''),
'base_url': os.environ.get('BASE_URL', '')
}
def api_login():
req = requests.post(creds).json()
set_key(dotenv_path, 'token', req.get('token')
main.py:
import os
import requests
from dotenv import load_dotenv
from login import login
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(dotenv_path)
creds = {
'token': os.environ.get('TOKEN', ''),
'username': os.environ.get('USERNAME', ''),
'password': os.environ.get('PASSWORD', ''),
'base_url': os.environ.get('BASE_URL', '')
}
def make_request():
if creds['token'] == '':
login()
print(os.environ.get('TOKEN', ''))
The only way I am able to get new token is if I store value in os.environ['temp_token'] = req.get('token')
in login()
and access it os.environ['temp_token']
in main.py
. The other way is to make login()
return the new token.
Is there a way you can get updated values from .env
file?