Как правильно установить PYTHONPATH для кода Visual Studio - PullRequest
0 голосов
/ 06 декабря 2018

Как правильно настроить переменную $PYTHONPATH для моей рабочей области в VisualStudio Code?

Справочная информация

Я установил две версии GNURadio:

  1. GNURadio версии 3.7.11, установленной менеджером пакетов Linux Mint в /usr/lib/python2.7/dist-packages/gnuradio

  2. GNURadio версии 3.7.13.4, установленной PyBOMBS в /home/tejul/Documents/gr13/default/lib/python2.7/dist-packages/gnuradio (мой каталог префиксов ~/Documents/gr13/default)

Я могу использовать более новую версию GNURadio только после запуска сценария setup_env.sh (который, среди прочего, добавляет/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages до $PYTHONPATH) и затем запустить python в терминале

tejul@Wacom:~/Documents/gr13/default$ ls
bin  etc  include  lib  libexec  setup_env.sh  share  src
tejul@Wacom:~/Documents/gr13/default$ source ./setup_env.sh 
tejul@Wacom:~/Documents/gr13/default$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> gr.version()
'3.7.13.4'
>>> 

Без изменения Python $ PYTHONPATH - естественно - импортирует более старую версию GNURadio.

Я хочуписать, запускать и отлаживать скрипты Python для новой версии GNURadio в VisualStudio Code.Я пытался понять выбор интерпретаторов Python , рабочих пространств и сред для VSCode.

Насколько я понимаюнастройку рабочего пространства VSCode python.pythonPath не следует путать с переменной окружения $PYTHONPATH.python.pythonPath - это путь к интерпретатору python , используемому для отладки или запуска кода, тогда как $PYTHONPATH - это переменная среды, которую python использует для поиска модулей .

Похоже, PyBOMBS не установил свой собственный интерпретатор python в мой каталог префиксов.Поэтому мне нужно использовать VSCode с моим обычным интерпретатором Python, расположенным в /usr/bin/python2.7.Поэтому переопределение VSCode python.pythonPath или выбор другого интерпретатора Python мне не помогут.

Мне нужно разрешить VSCode использовать мою собственную версию переменной окружения $PYTHONPATH, которая сообщит моему обычному интерпретатору Python импортировать модули предпочтительно из/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages.

Проблема

Следуя документации , я создал свой собственный файл .env в каталоге рабочей области, который устанавливает порядокпредпочтения для мест, из которых Python должен импортировать модули.Увы, это не влияет на интерпретатор Python.

Showing that VSCode is ignoring my $PYTHONPATH setting

Можете ли вы увидеть что-то, что я делаю здесь неправильно?Я также пытался:

  • Установка PYTHONPATH на один уровень папки выше, т.е. /home/tejul/Documents/gr13/default/lib/python2.7, это не помогло
  • Вызов переменной $PYTHONPATH вместо PYTHONPATH,это не помогло
  • Перезапуск VSCode после каждого изменения файла .env, это не помогло
  • Использование двойных кавычек вокруг строки пути, например, PYTHONPATH="/home/tejul/Documents/gr13/default/lib/python2.7:/usr/lib/python2.7", это не помогло

1 Ответ

0 голосов
/ 20 марта 2019

Настройка PYTHONPATH в .env у меня работает.Обратите внимание, что эффект только для vscode и инструментов, которые он запускает, таких как pylint.

Моя ситуация: у меня есть проект, который не является устанавливаемым пакетом pip, а просто исходной папкой.(По историческим причинам ...)

myproject/src

У проекта есть зависимости, определенные в пипсах, требующий файл.

Моя настройка:

  1. Я создаю virtualenv и устанавливаю пакеты из требуемого файла.
  2. Я открываю vscode в папке myproject - так он становится корнем vscode "project".
  3. Я указываю vscode использовать virtualenv в качестве интерпретатора Python.Это сделает импорт зависимостей, установленных с помощью pip.(Для линтеров, intellisense и т. Д.)
  4. Чтобы также сделать импорт из моего исходного проекта работающим для линтеров (особенно для pylint) в vscode, я добавляю .env с этим содержимым, добавляя исходную папку моего проекта в PYTHONPATH.:
PYTHONPATH=./src:${PYTHONPATH}
...