Один и тот же двоичный файл Python в двух разных терминалах видит другую среду

Сегодня я попытался запустить ячейку ноутбука Jupyter в vscode и получил

"Running cells with 'Python 3.10.6 64-bit' requires ipykernel package".

Это очень странно, так как среда моего ноутбука Jupiter еще вчера работала. Кроме того, я вижу все пакеты Python на своих местах. Единственное, что изменилось, это то, что прошлой ночью я обновил системные пакеты через Pop!_Shop (Pop!_OS 22.04 LTS).

Запустив python3.10 Я заметил, что версия GCC внутри терминала vscode отличается от версии в системном терминале. Как это возможно, когда команда which показывает, что путь к двоичному файлу тот же? Потом я проверил сам gcc --version и к моему удивлению с ним произошло то же самое.

из терминала vscode

Один и тот же двоичный файл Python в двух разных терминалах видит другую среду

с системного терминала

Один и тот же двоичный файл Python в двух разных терминалах видит другую среду

sys.path в обоих терминалах одинаково, но один видит пакеты, например requests, а другой нет.

Я уверен, что изначальная проблема с ячейкой jupyter связана именно с этим, потому что ipykernel тоже находится в sys.path, который почему-то недоступен терминалу vscode и, возможно, расширению jupyter.

Для Jupyter я могу переключиться на один из venvs, где проблема исчезнет. А вот магия с бинарником в терминалах остается неясной.

Обновлено:

Проблема была решена путем удаления плоской версии vscode и установки свежего deb-пакета с официального сайта. Теперь в терминале vscode у меня та же версия компилятора, что и в системном терминале и модули находятся без проблем, в том числе и ipykernel.

О, спасибо за комментарий, я как-то раньше не обращал внимания на функцию принятия ответа.

Ivan Volkov 24.11.2022 11:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит в том, чтобы переустановить vscode с пакетом deb с официального сайта. См. отредактированную часть вопроса.

Другие вопросы по теме