Vs code не видит скачанные библиотеки в python
писал раньше код в pycharm , он сразу видел какие библиотеки установлены и сразу помогал дописывать атрибуты и т.д. а vs code не видит скачанные библиотеки как это исправить?
Отслеживать
задан 22 сен 2020 в 18:23
21 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
VS Code «видит» библиотеки, которые находятся в одном с ним виртуальном окружении. Как настроить виртуальное окружение для VS Code можно поискать в интернете.
22 сен 2020 в 20:13
Скорее всего у Вас не указан путь к python или он неверен. Если пользуетесь дополнением «Python» то в строке состояния внизу должен быть указан текущий интерпритатор, нажмите на этот текст и укажите актуальный путь. Второй вариант в настройках задать переменную python.pythonPath. Например: «python.pythonPath»: «C:\\Python\\python.exe»
23 сен 2020 в 17:17
Ребят, кто-нибудь нашел ответ на этот вопрос? Я только начинаю писать код, и мне очень помогало автозаполнение, пока в один момент не пропало. Искал где только мог, но нигде ответа не нашелю
20 окт 2021 в 17:15
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Первое и важное необходимо установить расширение для python. Данное расширение поддерживает заполнение для кода и функцию IntelliSense . IntelliSense — это общий термин для ряда функций, которые и дают подсказки в коде для всех ваших файлов как built-in , так и для сторонних модулей. IntelliSense отображает переменные, методы, объекты классов и документацию в момент ввода. Более подробную информацию можно подчерпнуть на официальной страничке посвещенной данному вопросу.
Поскольку всегда, а правильнее сказать, как правило используются виртуальные пространства, то и модули для будут отличаться от глобальных установок. В этом случае в VSCode предусмотрено переключение на тот интерпретатор, который необходим в данном рабочем процессе.
Приведу пример. При помощи python -m venv env команды я создам виртуальное пространство для проекта, которое будет включать нужную версию python и модули, которые нужны только для данного проекта. Если не конфигурировался проект изначально при запуске VSCode будет цеплять глобальный python и глобальные модули (возможно, в новых версиях это не так). Это можно увидеть в нижнем левом углу интерфейса VSCode

При нажатии на данную область появится меню вверху окна с возможностью выбора пространства

Где я и могу выбрать нужный мне python 3.8.6 64-bit (‘env’:venv) . Из данного примера можно увидеть, что я могу использовать разные версии python и соответственно модули, для которых и будет работать IntelliSense .
Как настроить VS Code для разработки на PHP

Так может выглядеть интерфейс редактора после установки расширений
- Основные возможности
- EditorConfig for VS Code
- PHP Intelephense
- PHP Debug
- PHP Sniffer
- Semicolon Insertion Shortcut
- Extra
Основные возможности
- отладчик кода
- встроенный терминал
- удобные инструменты для работы с Git
- подсветка синтаксиса для множества популярных языков и файловых форматов
- удобная навигация
- встроенный предпросмотр Markdown
- умное автодополнение
- встроенный пакетный менеджер
VS Code имеет большое количество расширений для разработчика. Для установки нового пакета зайдите во вкладку «Extensions», введите название пакета в строке поиска, нажмите кнопку «Install».

EditorConfig for VS Code
EditorConfig — это конфигурационный файл и набор расширений к большому количеству редакторов кода. Он подхватывает настройки из файла .editorconfig , который, как правило, размещается в корне проекта. Расширение автоматически настроит отступы и перевод строк единообразно для всех разработчиков, использующих его. PHP код чаще всего выполняется на *nix системах, поэтому необходимо использовать стандарт.
Ниже приводится пример файла .editorconfig , который используется в Laravel:
root = true # Глобальные настройки, которые будут записаны для всех файлов. [*] charset = utf-8 # На Unix системах используется lf для перевода строки. # Это также требование стандарта PSR. end_of_line = lf insert_final_newline = true indent_style = space indent_size = 4 trim_trailing_whitespace = true # Можно задать индивидуальные настройки как для типов файлов, # так и отдельных файлов по имени. [*.md] trim_trailing_whitespace = false [*. ] indent_size = 2 [ ] indent_style = space indent_size = 2 [lib/**.js] indent_style = space indent_size = 2
PHP Intelephense
В редакторе уже есть поддержка синтаксиса и подсказок стандартных функций языка. Но без специального дополнения редактор не будет подсказывать пользовательские функции из других частей проекта. Поэтому для поддержки автодополнения, анализа кода, перехода к месту, где создана функция/класс/переменная (с помощью шортката Alt+Click ), используется дополнение PHP Intelephense
Чтобы подсказки не дублировались необходимо отключить встроенную в редактор поддержку кода для PHP: Extensions -> Search @builtin php -> PHP Language Features -> Disable
PHP Debug
При разработке может возникнуть ситуация, когда простых функций отладки и логирования становится недостаточно. Тогда может помочь специальный инструмент — Дебаггер. Для PHP есть расширение xdebug, которое позволяет расставить точки останова и посмотреть окружение в предполагаемом месте ошибки, выполняя код поэтапно либо до следующей точки.
Чтобы воспользоваться PHP Debug, необходимо установить сам XDebug, без него расширение для редактора работать не будет. Установив расширение, необходимо добавить конфигурацию для PHP в разделе Debug . После выбора языка в корне проекта будет создан файл .vscode/launch.json с задачами для Дебаггера. Расширение создаст файл со стандартными параметрами.
Для того, чтобы XDebug общался с нашим дебаггером, необходимо добавить настройки в файл конфигурации php. Чтобы найти этот файл выполните в терминале команду php —ini или запустите веб-сервер с кодом phpinfo() .
В Linux PHP подгружает не только основной файл, но и файл из этой директории. Например, на Ubuntu путь к директории конфигурационных файлов для PHP может быть таким — /etc/php/7.3/cli/conf.d/ . В ней создаём файл с необходимыми правами (требуются root права):
$ sudo touch /etc/php/7.3/cli/conf.d/99-local.ini $ sudo chmod 777 /etc/php/7.3/cli/conf.d/99-local.ini
xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 ; Порт, который мы указали в launch.json xdebug.idekey=code xdebug.remote_autostart=1
Это настройки для локальной разработки, когда проект разрабатывается и запускается на одном компьютере, например на вашей рабочей машине
PHP Sniffer
В языках программирования есть понятие стиль кодирования. Но не все разработчики знают об этом. Программа, которая отвечает за проверку на соответствие стандартам, называется линтер. В PHP приняты стандарты под названием PSR. Нас интересуют стандарты PSR-1 и PSR-12. Именно эти два стандарта касаются кодирования и правил оформления.
В PHP в качестве линтера используется PHP_CodeSniffer. Для его работы необходимо установить глобально сам линтер composer global require «squizlabs/php_codesniffer=*» и расширение PHP Sniffer.
Проверьте, что линтер установился:
$ phpcs --version PHP_CodeSniffer version 3.4.2 (stable ) by Squiz (https://www.squiz.net )
Выполнить проверку кода в терминале можно с помощью команды phpcs , явно указав стандарт, который мы хотим использовать, и путь для проверки:
$ phpcs --standard =PSR12 dirname >

Semicolon Insertion Shortcut
PHP требует разделять инструкции с помощью точки запятой. Расширение Semicolon Insertion Shortcut добавляет необходимый символ в конец строки с помощью шортката. Если при нажатии [Ctrl] + ; символ не вставляется, то необходимо проверить список горячих клавиш и при необходимости назначить комбинацию вручную: File -> Preferences -> Keyboard Shortcuts

Extra
Список расширений, которые могут быть использованы не только для PHP:
- GitLens — в VS Code уже встроена поддержка Git. Но когда базовых возможностей становится недостаточно, на помощь может придти Gitlens. Например, одна из полезных фич — git blame на текущей строке.

- Indent Rainbow — разноцветные отступы в коде. Подсвечивает некорректный отступ. Можно вместо радуги установить оттенки серого.

- Settings Sync — плагин, позволяющий синхронизировать настройки редактора между разными компьютерами. В качестве облачного хранилища используется Github Gists. Все настройки можно скачать, указав нужный файл синхронизации.
- Fira Code — моноширинный шрифт, в котором используются лигатуры (объединяет несколько символов в один) для общих комбинаций символов в программировании. Визуальная надстройка для более удобного чтения кода.
За что я не люблю PlatformIO?

Где upload_speed это скорость загрузки прошивки (изучайте документацию на ваш МК и загрузчик), а upload_port это номер порта, к которому подключена плата (сами ищите где об этом узнать). Для поддержки ардуиновских библиотек пишем туда же
lib_extra_dirs = C:\Program Files (x86)\Arduino\libraries
Всё! Можно работать. Подробнее читайте в статьях, ссылки выше.
Плюсы
- Дичайше удобная работа с кодом: автодополнение слов и подстановка методов класса (напомню, что автоматическая табуляция и подсветка синтаксиса имеется в Arduino IDE)
- “Живая” обработка ошибок при написании: пропущенные скобки-запятые, неправильные имена и т.д.
- Удобный навигатор по коду, с которым не заблудишься даже в километре строк. Отдельный блок структуры кода со “ссылками” на функции, объекты и дефайны
- Файловый менеджер проекта, в котором есть навигация по файлам и библиотекам проекта
- Очень быстрая компиляция кода (за исключением первой, когда происходит полная сборка проекта)
- Куча плагинов с сомнительным функционалом
- Поддержка работы напрямую с git (даже библиотеки можно тянуть напрямую)
- Полноценный дебаг (для микроконтроллеров, которые его поддерживают. Я с такими не работаю)
- Юнит-тестирование (читать на хабре и официальную доку)
Минусы
- Все настройки платы осуществляются текстовыми конфигами, что приводит к трате времени на изучение документации и лишние проверки “а туда ли сегодня подключена моя плата?”. Да, это расширяет возможности по настройке. Но это неудобно и тратит кучу времени.
- В детской Ардуино ИДЕ всё это делается двумя кликами мышкой через меню.
- Встроенный в Ардуино ИДЕ порт критически удобен, ничем не перегружен, сам закрывается при перепрошивке.
- Ардуиновский божественен, лучше любых “внешних”.
- В ИДЕ всё делается двумя кликами
- Сюда также можно добавить сложность переноса крупных Ардуино-проектов на VS Code: придётся переписать всю структуру проекта (отдельный кайф, если в проекте была куча вкладок) и дописать ещё кучу кода, чтобы он хотя бы компилировался.
Резюмируя
Я всеми руками за автодополнение и подстановку методов, это БОЖЕСТВЕННО, как и навигация по коду и прочие плюшки, которые касаются непосредственно программирования, то есть набора кода. Но по работе с платой лично для меня платформио является невыносимо неудобной программой: все эти конфиги, из за которых постоянный перенос проекта на разные платы становится работой индуса, отсутствие нормального монитора/плоттера (лично для меня – основной инструмент). Ни в коем случае не унижаю данную среду разработки, у неё огромное количество пользователей и им явно виднее. Но и не берусь рекомендовать данный софт тем, кто привык к Arduino IDE. Вы будете сначала очень приятно удивлены, а потом очень неприятно огорчены возможностями “взрослого” софта по сравнению с “детским”, где на каждый пук есть своя менюшка и всё готовенькое. Также в VS Code придётся соблюдать некоторые правила языка, которые в Arduino IDE за вас соблюдает компилятор. Кода для выполнения тех же задач придётся писать больше, и для работы с VS Code всё таки рекомендуется изучить любой учебник по C++. Я в первую очередь не программист, и делюсь своим опытом для не программистов, не забывайте об этом. Ну, как-то так.
C++: включение заголовков на примере библиотеки «plog», ч.1
Прочел сейчас подглаву 3.5 «More debugging tactics» (еще несколько тактик отладки программ) сайта-учебника «LearnCpp.com». В этой подглаве есть раздел «Using a logger» (использование регистратора событий при отладке), в которой автор учебника показывает на примере, как можно использовать для отладки своей программы стороннюю библиотеку, реализующую регистратор событий (logger).
Предлагаемая сторонняя библиотека «plog», насколько я понял, реализована рядом заголовочных файлов, в которых прописаны нужные макросы с помощью директив препроцессора и другие нужные вещи. Код этой библиотеки размещен на веб-сервисе «GitHub». (Конечно, это не единственная библиотека, реализующая регистратор событий, существуют десятки подобных библиотек, что отмечено в учебнике.)
Что такое регистратор событий (logger) и как он работает? Это программный механизм, который записывает сообщения о работе программы в текстовый файл, который называют журналом (log). Анализируя сообщения в журнале, можно делать выводы о причинах ошибок в программе, то есть производить отладку программы. Подробнее работа с регистратором событий описана по вышеуказанной ссылке на соответствующий подраздел учебника.
Для понимания описанного ниже, думаю, имеет смысл отметить, что я работаю в операционной системе «Windows 10».
Как начать работу с библиотекой «plog»
В учебнике недостаточно подробно описано, как начать работу с библиотекой «plog», там дано только несколько коротких пояснений. Автор учебника оправдывает это тем, что информация об этой библиотеке в учебнике носит демонстрационный характер и в дальнейшем эта библиотека в учебнике использоваться не будет. Мне же было интересно разобраться в этой теме немного подробнее.
В примере, приведенном в учебнике, для включения заголовочных файлов библиотеки «plog» в программу используется следующий код (этот же код показан в документации библиотеки):
#include #include
В тот момент, когда я добавил эти строки в программу, я еще не установил библиотеку «plog». Мой редактор кода «VS Code» подчеркнул вышеуказанные строки красной волнистой линией, так как не смог найти указанные заголовочные файлы. При этом автоматическая проверка синтаксиса всей программы отключается, что отмечается примерно таким сообщением:
Обнаружены ошибки #include. Измените includePath. Волнистые линии отключены для этой единицы трансляции (C:\Users\Илья\source\repos\learncpp\program.cpp).
Это логично, ведь для проверки синтаксиса требуется доступ к содержимому указанных заголовочных файлов.
Следует отметить, что на самом деле проверку синтаксиса программ на языке C++ производит в моем случае не сам редактор кода «VS Code», а его расширение «ms-vscode.cpptools» для работы с программами на языке C++, которое включает технологию автодополнения «IntelliSense» для языка C++, ответственную за автоматическую проверку синтаксиса.
По умолчанию редактор кода «VS Code» ищет указанные заголовочные файлы в текущей папке проекта. Однако, в параметрах расширения «ms-vscode.cpptools» можно указать другие папки для хранения включаемых файлов, но я пока что этого делать не стал. (Эти параметры можно сохранить отдельно для текущего проекта.)
Я просто скачал ZIP-архив со всеми файлами библиотеки «plog» с веб-сервиса «GitHub» (такая возможность является доступной для любого публичного репозитория), а затем скопировал папку «plog» (она находится внутри папки «include» репозитория библиотеки) в папку своего текущего проекта. После этого редактор кода «VS Code» нашел указанные заголовочные файлы и перестал показывать наличие в программе ошибок.
Ключи компилятора MSVC
То, что редактор кода может видеть вышеуказанные заголовочные файлы, не значит, что их точно так же может видеть и компилятор, работающий из командной строки. Это ведь разные программы, поэтому и настраивают их по отдельности (для начинающих это не всегда очевидно). В моем случае редактор кода «VS Code» не видит в программе никаких ошибок. А при попытке компиляции я получил следующее:
PS C:\Users\Илья\source\repos\learncpp> cl /EHsc /utf-8 /std:c++20 /W4 "program.cpp" /link /out:"program.exe"
fatal error C1083: Не удается открыть файл включение: plog/Log.h: No such file or directory
То есть компилятор не видит вышеуказанных заголовочных файлов.
В чем причина ошибки? Дело в том, что путь к заголовочным файлам с помощью директивы препроцессора #include можно указывать либо в двойных кавычках «путь» , либо в угловых скобках . При этом компилятор будет искать в этих двух случаях заголовочные файлы по-разному. Подробнее про это можно почитать в документации компилятора.
В нашем случае для включения в программу заголовочных файлов в директиве препроцессора #include использованы угловые скобки. В документации компилятора сказано, что в этом случае компилятор ищет заголовочные файлы в следующем порядке: 1) по путям, указанным с помощью ключа /I компилятора в командной строке; 2) по путям, указанным в переменной окружения INCLUDE .
Таким образом, по умолчанию при угловых скобках поиск компилятором заголовочных файлов в текущей папке проекта не предусмотрен (компилятор не нашел заголовочных файлов в текущей папке проекта, потому что там их и не искал, в этом причина ошибки)! В данном случае я не использовал ключ /I компилятора в командной строке, а в переменной окружения INCLUDE , видимо, путь к текущей папке проекта не прописан. Проверим это в программе-оболочке «PowerShell» (тут про это подробнее):
PS C:\Users\Илья\source\repos\learncpp> $Env:INCLUDE
Эта команда выводит в окно консоли значение переменной окружения INCLUDE . У меня это значение содержит 8 путей, разделенных символом точки с запятой ; . Среди этих путей пути к папке моего текущего проекта нет.
Кстати, можно разбить значение переменной окружения INCLUDE на отдельные пути, чтобы их можно было просмотреть в более удобочитаемом виде, следующим образом (для разбиения строки на подстроки используем оператор -split ):
PS C:\Users\Илья\source\repos\learncpp> $Env:INCLUDE -split ";"
Как избавиться от вышеописанной ошибки, выдаваемой компилятором? Очевидно, есть несколько способов. Например, я попробовал указывать пути к заголовочным файлам в директиве препроцессора #include , заключая их в двойные кавычки. Да, компилятор увидел два указанных в блоке кода выше заголовочных файла, но это всё равно не сработало, так как в те заголовочные файлы включены другие заголовочные файлы библиотеки «plog» (и так далее) с использованием угловых скобок. Поэтому компилятор выдал уже новую ошибку, на следующем уровне включения заголовочных файлов библиотеки. (Переписывать все файлы библиотеки я не решился.)
Еще можно вписать путь к папке моего текущего проекта в переменную окружения INCLUDE или поместить заголовочные файлы библиотеки «plog» в одно из тех местоположений, пути к которым прописаны в переменной окружения INCLUDE . Но я эти способы не пробовал, а решил обойтись ключом /I компилятора (добавленный ключ помечен ниже красным цветом):
PS C:\Users\Илья\source\repos\learncpp> cl /EHsc /utf-8 /std:c++20 /W4 /I"C:\Users\Илья\source\repos\learncpp" "program.cpp" /link /out:"program.exe"После такого изменения команды запуска компилятора MSVC в моем случае компиляция прошла успешно, без ошибок и предупреждений. Полученный исполняемый файл запускается и работает так, как описано в учебнике.