Как правильно настроить PYTHONPATH env в VScode - PullRequest
0 голосов
/ 11 июля 2020

Структура проекта похожа на

- a.py
- unittest
   - test_a.py

A.py

class A():
    def function_a(self):
        return 'function_a'

test_a.py

from a import A

class TestA():
    def test_a(self):
        assert A().function_a() == 'function_a'

Когда я использую терминал и set PATHONPATH=//<my-project-folder>, его можно обнаружить и протестировать с помощью pytest. Однако, когда я пытался отладить его в VScode, он продолжал выбрасывать No module named a.

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

Я пробовал таким образом и поместите .env в папку моего проекта.

.env

PYTHONPATH=C:\\Repos\\test-project

(Я сделал это с экранированием и без него, это не сработало в любом случае.)

.vscode / setting. json

{
    "python.pythonPath": "C:\\Python27\\python.exe",
    "python.testing.pytestArgs": [
        "unittest"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.envFile": "${workspaceFolder}/.env",
}

1 Ответ

0 голосов
/ 11 июля 2020

Чтобы узнать, какое значение имеет переменная среды PYTHONPATH, используйте следующий test_a.py файл

import os

def test_PYTHONPATH():
  assert os.environ.get('PYTHONPATH') == "XX"

Я тестировал его на Windows с Python 3.6.

В моем тесте я установил .env в рабочей области root папку с содержимым

PYTHONPATH=C:\Projects\test-project\

Запуск теста дал ошибку утверждения и показал, что значение PYTHONPATH было значение, определенное ОС.

Запуск терминала и удаление PYTHONPATH из глобальных переменных среды и запуск VS C из этого терминала с C:\Projects\test-project\ в качестве аргумента открыл проект, и теперь тест не проходит, но показывает правильный PYTHONPATH, как определено в файле .env.

Я пришел к выводу, что переменные среды ОС (на Windows) переопределяют любую переменную среды, установленную VS C. Если это верно, вы не можете расширить переменную среды, как показано в документации

PYTHONPATH=${PROJ_DIR}:${PYTHONPATH}

Это должно быть зарегистрировано как ошибка в VS C или VS C - python extension.

Все, что определено в VS C, должно переопределять любую переменную среды ОС и иметь возможность использовать любую переменную среды ОС.

...