Skip to content

Multi-line variables not loading correctly with load_env #555

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ldtcooper opened this issue Mar 19, 2025 · 0 comments
Open

Multi-line variables not loading correctly with load_env #555

ldtcooper opened this issue Mar 19, 2025 · 0 comments

Comments

@ldtcooper
Copy link

When reading a multi-line environment variable (e.g. an SSH key) only the first line is read when using load_env. dotenv_values appears to read the multiline variable correctly.

Tested on a Apple M2 MacBook Air running Sonoma 14.7.4 with Python 3.12.9. While I had this issue inside a functions-framework function, I was able to reproduce it outside of that environment (see below.)

As an example, try the following .env file:

FOO="foo"
BAR="bar"
BAZ1="baz
baz
baz
baz
baz
"
BAZ2="baz\nbaz\nbaz"
LAST="last"

And the following Python code:

from dotenv import load_dotenv, dotenv_values
import os

load_dotenv()
print(os.environ.get('FOO'))
print(os.environ.get('BAR'))

print(os.environ.get('BAZ1'))
print(len(os.environ.get('BAZ1')))

print(os.environ.get('BAZ2'))
print(len(os.environ.get('BAZ2')))

print(os.environ.get('LAST'))

env = dotenv_values()
print(env)

print(env.get('BAZ1'))
print(len(env.get('BAZ1')))

print(env.get('BAZ2'))
print(len(env.get('BAZ2')))

When I run that code, it produces the following output:

foo
bar
"baz
4
baz
3
last
OrderedDict({'FOO': 'foo', 'BAR': 'bar', 'BAZ1': 'baz\nbaz\nbaz\nbaz\nbaz\n', 'BAZ2': 'baz\nbaz\nbaz', 'LAST': 'last'})
baz
baz
baz
baz
baz

20
baz
baz
baz
11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant