Skip to content

Support dotenv .env files using export as in export VAR=value #16549

Closed

Description

I know VS Code with Pylance supports loading environment variables from a .env (dotenv file), which is great. It allows me to, for example, easily run or debug tests right from the editor, using all the environment variables needed.

Here's the example from the docs:

# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/dev/

# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/dev
MYPROJECT_DBUSER=devadmin
MYPROJECT_DBPASSWORD=!dfka**213=

Feature Request

I would like VS Code / Pylance to also support defining the variables with export, as in:

# API endpoint
export MYPROJECT_APIENDPOINT=https://my.domain.com/api/dev/

# Variables for the database
export MYPROJECT_DBURL=https://my.domain.com/db/dev
export MYPROJECT_DBUSER=devadmin
export MYPROJECT_DBPASSWORD=!dfka**213=

This would allow me to use the same set of environment variables from the command line by sourcing that file.

For example I could load the environment:

$ source .env

And then run other commands that would use the same environment variables, for example, to run the tests usingcoverage:

$ coverage run --source ./app/ -m pytest

Current behavior

As Currently VS Code / Pylance doesn't support having export in these .env files, I have to manually add the export before each variable before using it on the command line, and then I have to manually remove those exports manually to run again the tests from inside VS Code.

Apart from the double effort of adding and removing those exports, you can imagine that I often forget I had to do that, and I end up spending a long time debugging "why it's not working" in one place or the other, while it was just that I forgot to add or remove those exports. 😅

Activity

  1. jakebailey commented on Jun 23, 2021

    @jakebailey
    Member

    Pylance doesn't parse these at all; we rely on the Python extension to do this and just query them for the info. I don't think they support export in these files.

    See: https://code.visualstudio.com/docs/python/environments#_environment-variable-definitions-file

  2. jakebailey commented on Jun 23, 2021

    @jakebailey
    Member

    Oh, that's literally the link you provided, oops.

    In any case, I think this should be transferred, since we can't fix this in Pylance, anyway.

  3. jakebailey commented on Jun 23, 2021

    @jakebailey
    Member

    This is just a workaround, but you could also write this temporarily:

    # API endpoint
    MYPROJECT_APIENDPOINT=https://my.domain.com/api/dev/
    export MYPROJECT_APIENDPOINT
    

    IIRC this is functionally equivalent in the shells I'm familiar with.

  4. locked and limited conversation to collaborators on Jun 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions