Использование mathplotlib в лаборатории Jupyter приводит к гибели ядра

Использование matplotlib.pyplot для создания фигуры работает в локальном проекте Python, но в лабораторной среде Jupyter с тем же кодом это приводит к гибели ядра.

В более старых проблемах предлагалось понизить версию freetype с 2.11 до 2.10.

Но я использую версию 2.12.1 как в версии проекта pycharm, так и в версии de jupyter, но одна работает, а другая нет. похоже, это не решение.

Другие также предложили попробовать:

import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"

Это тоже было не решение

мой код:

import tensorflow as tf
import pathlib
import matplotlib.pyplot as plt
import numpy as np

batch_size = 32
img_height = 180
img_width = 180

data_dir = pathlib.Path("./data_dir").with_suffix('')
output_dir = pathlib.Path("./ds_out").with_suffix('')

ds = tf.keras.utils.image_dataset_from_directory(
  data_dir,
  labels='inferred',
  image_size=(img_height, img_width),
  batch_size=batch_size)

class_names = ds.class_names
print(class_names)

ds.save(str(output_dir))

loaded_ds = tf.data.Dataset.load(str(output_dir))

plt.figure(figsize=(10, 10))
for images, labels in loaded_ds.take(1):
  for i in range(9):
    ax = plt.subplot(3, 3, i + 1)
    plt.imshow(images[i].numpy().astype("uint8"))
    plt.title(class_names[labels[i]])
    plt.axis("off")

plt.show()

Редактировать: Я попробовал более простой пример в новом блокноте:

# importing matplotlib module 
from matplotlib import pyplot as plt 
 
# x-axis values 
x = [5, 2, 9, 4, 7] 
 
# Y-axis values 
y = [10, 5, 8, 4, 2] 
 
# Function to plot 
plt.plot(x, y) 
 
# function to show the plot 
plt.show()

Это также убивает ядро, если я не удалю обе эти строки:

# Function to plot 
plt.plot(x, y) 
     
# function to show the plot 
plt.show()

Возможно, виноват ваш код. Пожалуйста, покажи это

Alexey S. Larionov 04.04.2024 16:05

Не думал, что это актуально, поскольку работает в обычном проекте pycharm. но все равно обновил вопрос, чтобы быть уверенным

Rick 04.04.2024 16:09

Используете ли вы %matplotlib inline в Jupyter (например, после import matplotlib.pyplot as plt)? В противном случае он, возможно, попытается открыть новое окно, а из браузера просто не сможет.

Alexey S. Larionov 04.04.2024 16:25

Я попробовал это, но это не имело никакого значения ни для моего кода, ни для упрощенного примера.

Rick 04.04.2024 16:28

А что если нет plt.show()? В клетках Юпитера это не обязательно.

Alexey S. Larionov 04.04.2024 16:31

простой пример теперь возвращает [<matplotlib.lines.Line2D at 0x28f1e137810>], а затем ядро ​​все равно умирает. В моем собственном коде ядро ​​все равно просто умирает. Пробовал и с и без %matplotlib inline

Rick 04.04.2024 16:35

Что конкретно вы подразумеваете под словами «Использование matplotlib.pyplot для создания фигуры работает в локальном проекте Python, но в лабораторной среде Jupyter»? Вы запускаете это не локально? Где? Что вы подразумеваете под «лабораторной средой Jupyter»? О каких версиях речь? Ваш простой пример кода отлично работает в JupyterLab версии 3.4.8 и JupyterLab версии 4.1.5. Я могу указать вам сеансы, обслуживаемые через службу MyBinder, где она работает нормально. Таким образом, это не является общим, и вам нужно посмотреть на свое окружение. Как вы установили JupyterLab? Раньше это работало?

Wayne 04.04.2024 18:30

да, технически они оба работают локально. Я хотел сказать, что код не запускается в лабораторном блокноте Jupyter. но когда я скопировал его в проект pycharm, он запустился. Он никогда не запускался в ноутбуке, я установил jupyterlab с помощью pip

Rick 05.04.2024 09:08
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
8
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Ни одно из обычных исправлений мне не помогло, поэтому я решил попробовать еще раз.

Я создал новый venv и на его основе новое ядро ​​ipython и использовал это ядро ​​в jupyterlab.

Проблема решена путём обхода старого ядра, но странно, что я сделал одно и то же дважды и на одном всё работает, а на другом нет.

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

Сюжетные экспресс-графики не отображаются в блокноте Jupyter репозитория GitHub
Как автоматизировать форматирование кода в VSCode для ноутбуков Jupyter с помощью Black Formatter?
Jupyter не позволяет мне вводить левую квадратную скобку
Ошибка JavaScript Jupyter Notebook при попытке отобразить виджеты
Создание функции, которая принимает две последовательности ДНК, проверяет, имеют ли они одинаковую длину, являются ли они действительными последовательностями и какой тип мутации они имеют
FileNotFoundError: системе не удается найти указанный путь: «D:\\MS Data\\CI Papers\\My Paper\\LungCancerDataset\\Benign_cases»
При использовании блокнота Jupyter в VSCode интерпретатор Python игнорируется
Невозможно создать диаграмму plantuml при попытке использовать «iplantuml» в Jupyter Notebook в vscode
Синтаксическая ошибка при попытке использовать «iplantuml» в Jupyter Notebook
Обновление нескольких графиков в блокноте Jupyter при изменении значения ползунка

Похожие вопросы

Используйте caplog в приспособлении автоматического использования в pytest
Преобразование в столбец с плавающей запятой, строковый столбец pandas со смешанными тысячными и десятичными разделителями
Групповой/кластерный полярный фрейм данных по подстроке в строке или строке в подстроке
Python 3: TypeError: невозможно создать экземпляр абстрактного класса BaseConnection с помощью абстрактного метода create_connection
Оптимизация файлов Python
Как отобразить поле uuid моего сериализатора в виде строки в запросе на получение с помощью django restframework
Как запустить асинхронную функцию из другого потока в python-telegram-bot (PTB)
Python cryptography.x509: проверка сертификата x509, сгенерированного модулем Python x509, подписанного центром сертификации (а не корнем), завершается неудачно
Идентификация 4-связных точечных рисунков в сетке 3D-точек с шумом
Как я могу проверить, действителен ли ключ API Google Gemini или нет?