Ipython: Функция «Загрузить как PDF» показывает бесполезное сообщение об ошибке и требует большой зависимости

Созданный на 8 февр. 2015  ·  40Комментарии  ·  Источник: ipython/ipython

Это скорее запрос функции, потому что я тестировал функцию «скачать как PDF» в Ubuntu 14.10, используя новый ноутбук (Ipython 3), и она отлично работает. Проблема в том, что когда я попробовал это в первый раз, у меня не было необходимых зависимостей, и я получил сообщение об ошибке ! LaTeX Error: File 'adjustbox.sty' not found . Я попытался обойти эту проблему, установив только adjustbox.sty, но в конечном итоге мне пришлось установить texlive-latex-extra .

Проблема в том, что для этого требуется установка не менее 584 МБ. Это большая зависимость для очень специфической функции. Итак, есть пара предложений:

  1. Покажите более простое сообщение об ошибке, если зависимость, например Adjustbox, не найдена на странице ошибки 500 в записной книжке. В настоящее время сообщение об ошибке: nbconvert failed: PDF creating failed
  2. В долгосрочной перспективе было бы здорово конвертировать в PDF с помощью веб-службы так же, как Google Drive при загрузке PDF из документа.
nbconvert

Самый полезный комментарий

Спасибо, что участвовали в этом, все, я прохожу и очищаю старые проблемы, которые были решены, и эта созрела для закрытия.

В этом выпуске было много хороших дискуссий, но резюмирую:

1. При сбое преобразования теперь отображается более подробное сообщение. В записной книжке версии 4.2.2 удаление файла .sty на моем компьютере вызывает сообщение об ошибке, которое выглядит следующим образом:

screen shot 2016-10-27 at 11 57 41 am

2. мы не собираемся предоставлять преобразование записных книжек в PDF как веб-сервис
3. если сторонний поставщик делает такой веб-сервис доступным, загрузка встроенной записной книжки явно указывает на использование LaTeX с # 7951 - и выглядит так:

screen shot 2016-10-27 at 12 01 12 pm

4. Что касается размера требуемых зависимостей, @iuridiniz предложил

Любое дальнейшее обсуждение этих и связанных с ними вопросов, вероятно, следует проводить на https://github.com/jupyter/nbconvert .

Удачного взлома! :галстук-бабочка:

Все 40 Комментарий

Отображалась ли латексная ошибка на странице ошибок HTML или только в терминале?
Пока конкретное сообщение об ошибке попадает на страницу с ошибкой, я думаю
это все, что мы можем сделать. Мы не собираемся разбирать, почему латекс не удалось - я
конечно есть много возможных способов.

Было бы интересно изучить альтернативные способы создания PDF,
например, используя reportlab или wkhtmltopdf. Мы определенно не должны звать
в веб-службу по умолчанию.

В терминале появилась ошибка латекса. На странице ошибки HTML я получил только одно сообщение: nbconvert failed: PDF creating failed . А как насчет добавления трассировки на страницу ошибки HTML?

Я забыл упомянуть, что идея использования веб-службы должна была стать запасным вариантом при возникновении ошибки в локальной установке. Разве не должно быть довольно просто создать сервер, получающий запросы на преобразование файлов ipynb, аналогично тому, что делает nbviewer?

Веб-сервисы, такие как nbviewer, являются добровольными людьми, которые открыто публикуют свою работу в Интернете.
Наличие веб-сервиса для PDF по умолчанию было бы очень плохо для конфиденциальности и сделало бы блокнот непригодным для использования в Интернете.

Единственная служба, которая на данный момент делает это, - это matjax, потому что она была слишком большой. А для 4.0 мы будем поставлять его как часть IPython.

@Carreau Я не говорю, что PDF-файл будет публично опубликован в Интернете, а будет преобразован на сервере, управляемом Ipython, и доставлен в виде загрузки для пользователя в качестве запасного варианта на случай, если на локальном компьютере нет надлежащей установки.

В мире с открытым исходным кодом очень не одобряется наличие программного обеспечения, которое автоматически отправляет ваши данные на сервер, когда вы явно не просили его об этом. Мы могли бы сделать что-то подобное в качестве явной опции «преобразовать в PDF на серверах IPython», но мы не стали бы делать это в качестве запасного варианта, когда локальное преобразование не удалось.

Да, вы правы, так бы лучше. Возможно, сообщение о том, что что-то пошло не так с преобразованием, и дополнительная кнопка для загрузки файла с помощью внешнего веб-сервиса.

Я думаю, что это возможно, но в таком случае зачем останавливаться на PDF?
Наличие (полной, но все же ограниченной) службы преобразования в облаке может иметь смысл, о чем уже упоминалось несколько раз. Это будет "nbviewer api". Тем не менее, это поднимает проблемный юридический вопрос об ответственности в случае утечки пользовательских данных, взлома или других вещей, которые мы (пока) не готовы решать.

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

Что ж, преобразование PDF требует большой загрузки (хотя большая часть его размера - это документация), и вряд ли у каждого пользователя Ipython будет установлен этот пакет. Поэтому я подумал, что сокращение усилий для начала использования этой функции было бы хорошим дополнением. Какие еще конверсии вы имеете в виду?

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

Что касается утечек пользовательских данных, я подумал, что единственное, что требуется для этого, - это файл pynb. Какая информация о пользователе необходима для преобразования? В любом случае сервер, предоставляющий PDF-файлы, не должен сохранять пользовательскую информацию.

Пользовательские данные включают само содержимое записной книжки. И хотя сервер не должен сохранять эту информацию, вы не знаете, когда отправляете ему HTTP-запрос, что он собирается с ним делать.

На данный момент я без проблем могу сказать, что вам нужен установленный Latex для преобразования записных книжек в PDF. Зависимости - это не то, чего нам нужно избегать.

На данный момент я без проблем могу сказать, что вам нужен установленный Latex для преобразования записных книжек в PDF. Зависимости - это не то, чего нам нужно избегать.

Я согласен с @takluyver , возможно, позже можно будет разработать что-то более сложное, но пока я не против, просто попросить людей установить Latex, если они хотят использовать эти функции ...

В терминале появилась ошибка латекса. На странице ошибки HTML я получил только одно сообщение: nbconvert failed: Ошибка создания PDF. А как насчет добавления трассировки на страницу ошибки HTML?

Мне это кажется хорошей идеей, что все думают по этому поводу?

Мне это кажется хорошей идеей, что все думают по этому поводу?

Звучит неплохо...

А как насчет добавления трассировки на страницу ошибки HTML?

Это может иметь смысл, хотя ошибки LaTeX - одни из самых длинных и наименее информативных существующих ошибок. Нам нужно будет убедиться, что мы правильно обрабатываем 1000 строк вывода ошибок, когда обычно не более одной из этих строк содержит какую-либо значимую информацию.

Какие еще конверсии вы имеете в виду

Все. Если мы умеем PDF, почему бы не HTML, RST, markdown и даже Just Latex.
Установить Pandoc непросто ...

Что касается утечек пользовательских данных, я подумал, что единственное, что требуется для этого, - это файл pynb. Какая информация о пользователе необходима для преобразования? В любом случае сервер, предоставляющий PDF-файлы, не должен сохранять пользовательскую информацию.

Если у вас есть дополнительные файлы, такие как связанные изображения, их также, возможно, потребуется загрузить.
Даже если сервер не должен хранить вещи, если нас взломают, это может
или он может даже передать вам зараженный PDF-файл.

Трудно представить, что можно сделать с данными (или их отсутствием), см. [Этот пример]) http://mashable.com/2015/01/28/redditor-muslim-cab-drivers/) где шаблон недостающие данные позволили предположить вероисповедание водителя такси Нью-Йорка.

Хотя мы согласны с тем, что служба будет полезной, мы, вероятно, не будем включать ее по умолчанию.
Также нам нужно время разработчиков и разработчиков, чтобы поддерживать сервис в сети + быть юридически защищенным,
так что, если кто-то не согласится и не сделает это, или мы не получим для этого финансирование, есть лишь небольшой шанс, что это произойдет.

Для сообщения об ошибке было бы разумно.

Я согласен, что пока лучше описать зависимости и улучшить сообщение об ошибке.

Можно ли определить, установлен ли LaTeX, прежде чем пытаться преобразовать файл ipynb? Если это возможно, Ipython сможет выдать полезное сообщение об ошибке вместо того, чтобы выдавать ошибку в отношении очень конкретного файла. В моем случае я подумал, что другой пакет установил дистрибутив LaTeX, потому что pdflatex похоже, работает. Я полагаю, что большинство ошибок, с которыми сталкиваются пользователи Ipython в этом контексте, связаны с тем, что они не установили дистрибутив LaTeX. Таким образом, раннее обнаружение этой проблемы принесет пользу большинству пользователей.

Возможно, разумным компромиссом является добавление трассировки на страницу ошибки HTML, но не показывать ее по умолчанию (потому что она слишком длинная и неинформативная). После нажатия на текст, например «Хотите увидеть трассировку?», Трассировка могла бы быть показаны. Однако, если возможно раннее обнаружение отсутствующей зависимости, об этом должно быть сказано в основном сообщении на странице ошибки.

@takluyver

Пользовательские данные включают само содержимое записной книжки. И хотя сервер не должен сохранять эту информацию, вы не знаете, когда отправляете ему HTTP-запрос, что он собирается с ним делать.

Но вы имеете в виду слежку, как предложил

@Carreau

Все. Если мы умеем PDF, почему бы не HTML, RST, markdown и даже Just Latex.
Установить Pandoc непросто ...

Я не думаю, что HTML или RST нужны в сервисе преобразования, потому что они уже доступны в самой записной книжке. Однако преобразования Markdown и LaTeX могут быть полезны.

Если сервер взломают, все возможно. Однако вероятность взлома достаточно мала, и это не должно мешать людям запустить службу. Вместо этого следует принять меры безопасности (оперативная установка обновлений безопасности, открытие только необходимых портов, включение брандмауэра, установка только необходимых приложений, SSL и т. Д.)

Думаю, мы уже проверяем, доступна ли команда pdflatex . Я сомневаюсь, что есть хороший способ проверить, все ли файлы, которые потребуются для обработки Latex, присутствуют, кроме его запуска.

Я сомневаюсь, что есть хороший способ проверить, все ли файлы, которые потребуются для обработки Latex, присутствуют, кроме его запуска.

Я сомневаюсь в этом.

Я не думаю, что HTML или RST нужны в сервисе преобразования, потому что они уже доступны в самой записной книжке. Однако преобразования Markdown и LaTeX могут быть полезны.

Не стоит недооценивать то, что делает nbconvert / nbviewer :-) если у вас есть SVG, он может даже $ inkscape из SVG в PNG. Вы просто еще не достигли этого.

Если сервер взломают, все возможно. Однако вероятность взлома достаточно мала, и это не должно мешать людям запустить службу. Вместо этого следует принять меры безопасности (оперативная установка обновлений безопасности, открытие только необходимых портов, включение брандмауэра, установка только необходимых приложений, SSL и т. Д.)

Это большая работа, и не стоит недооценивать отличный брандмауэр и АНБ.
Но в любом случае есть много лабораторий, где удаленное подключение к интернет-сервисам исключено.
также, но я думаю, что вы сильно недооцениваете объем работы в "и т. д." и "вероятность взлома".

Если известно, что такие люди, как, например, Питер Норвиг, используют ноутбуки, а затем потенциально используют сервис, то он со 100% вероятностью станет целью атак.

В дистрибутивах Debian это работает:

 ➜  ~  dpkg -s sudo | grep "install ok installed"
 Status: install ok installed
 ➜  ~  dpkg -s texlive | grep "install ok installed"
 Status: install ok installed
 ➜  ~  dpkg -s texlive-latex-extra | grep "install ok installed"

Я удалил texlive-latex-extra перед выполнением последней команды. Однако я не имею ни малейшего представления о Windows.

@Carreau Нет, я хотел сказать, что nbconvert уже выполняет много полезных преобразований, поэтому нам не нужна служба преобразования, реализующая то же самое снова.

Что касается безопасности, это большая работа, но это почти механическая работа. Против спецслужб ничего не поделаешь. АНБ регулярно разрывает зашифрованные SSL-соединения. Объем работы в "и т. Д." Зависит от конкретных требований сайта, но в этом случае, благодаря простоте обслуживания, дополнительные потребности не слишком требовательны.

Google регулярно становится объектом промышленного шпионажа, и если какая-то иностранная разведка захочет украсть информацию, вероятность того, что выбранным вектором атаки будет служба ipynb-> pdf, почти 0%. Они знают, что технически подкованные люди не будут загружать конфиденциальную информацию таким небрежным образом. Более того, если бы они хотели получить данные Норвига, они бы заразили его ноутбук, и тогда все дополнительные меры безопасности были бы бессмысленными.

У меня установлены как latex, так и pdflatex, но в RHEL 6 и 7 всегда adjustbox.sty при преобразовании спотыкается. ОБЯЗАТЕЛЬНО ли это должен быть файл стиля, который не является стандартным?

Экспорт PDF безнадежно сложен в Windows 7 (или любой другой Windows, если на то пошло).

Это процесс:

  1. Отсутствует mistune - установка pip не работает, но, к счастью, установка conda стала доступной сегодня.
  2. Отсутствует пандок. Не доступен вообще в pip или conda, поэтому поищите в Интернете установщик Windows размером 18 МБ.
  3. Отсутствует pdflatex. Где это взять для Windows? Есть что-то под названием MiKTeX, размер которого составляет 163 МБ, и неясно, будет ли он выполнять этот экспорт в PDF.

Пока что это 1 неработающая установка и удаление пипа, 1 успешная установка conda и 2 массовые загрузки от случайных третьих сторон, прежде чем мы приблизимся.

Я просто не знаю, как кто-то может поддерживать это на загруженных машинах пользователей, и это просто для вывода файла в формате PDF. Многие другие программные пакеты управляют экспортом PDF без каких-либо зависимостей.
Нет лучшего способа?

@blokeley Надеюсь, вам приходилось иметь дело с этим только один раз. Мы сталкиваемся с этим почти каждую неделю.
Если у вас есть лучший способ, который работает, то это было бы здорово.

Думаю, мы можем исправить это одним из двух способов:

  1. Попытайтесь убедиться, что латекс и его зависимости установлены.
  2. Напишите шаблон и экспортер PDF, который напрямую выводит в PDF.

Я думаю, что (2) на самом деле проще, чем (1). Я не знаю, заинтересована ли эта команда в распределении человеческих ресурсов ... В прошлом у меня работал прямой PDF-шаблон, хотя он был очень простым.

Я думаю, что у нас есть только два разумных способа экспортировать PDF:

  • HTML через предварительный просмотр печати в браузере -> печать в PDF
  • Латекс

Если кто-то хочет написать еще один экспортер PDF с использованием других инструментов, он будет приветствоваться как пользовательский сторонний экспортер, но, вероятно, не как новый экспортер, поставляемый с самим nbconvert.

Может быть, достаточно будет чего-нибудь более простого, например, переименования из «PDF» в «Latex PDF» и более подробного сообщения об ошибке. Прямо сейчас HTML-сообщение имеет вид «500: внутренняя ошибка сервера», и ничего не указывает на то, что это проблема зависимости (кроме консоли сервера, к которой пользователь может не иметь доступа).

Может быть, что-нибудь простое, например, переименование из "PDF" в "Latex PDF".

уже сделано в # 7951

Тем не менее, сообщение об ошибке должно быть улучшено.

Я бы хотел написать экспортер PDF, но мое время несколько ограничено (не буду утомлять вас отговорками). Если ничего не произойдет, я попробую написать прототип летом этого года.

Или, что более реалистично, это может быть проект Google Summer of Code? Я был бы счастлив пожертвовать немного денег.

IPython не поддерживает GSoC - Фернандо твердо убежден, что не стоит тратить наше время на наставничество.

У меня такие же проблемы, как и для Windows 7.
На работе я использую брандмауэр, и мне нужно получить специальное разрешение на установку программного обеспечения. Несколько моих коллег и я пытаемся опробовать дистрибутив Anaconda. мы надеялись, что это единственное, что нам нужно будет установить.
Думаю, нам нужно всего 3 аддона, mathjax, pandoc (эти два описаны в подробных инструкциях по установке) и третий MiKTeX, которого нет в инструкциях по установке. вы не узнаете об этом, пока не перейдете на страницу pandoc. заставить ноутбук и nbconvert безупречно работать с окнами за брандмауэром непросто!

Кто-то может написать программу экспорта PDF nbconvert, которая либо напрямую переходит в PDF с помощью reportlab (который теперь устанавливается в Windows), либо создает HTML, а затем преобразует его в PDF с помощью таких инструментов, как wkhtmltopdf или weasyprint . Если все прошло хорошо, мы можем даже включить его в nbconvert. Но я не думаю, что это достаточно высокий приоритет, чтобы мы в ближайшее время сами над этим поработали.

@ drafter250 вам также может понадобиться Inkscape, если вы хотите использовать векторизованные графики matplotlib (svg), преобразованные в pdf.
@takluyver Я также

Здесь, безусловно, много зависимостей. Для nbconvert. Латекс, сфинкс, джинджа, миктекс, inkscape. и т. д. Мне трудно удерживать все это прямо. Есть ли какие-либо ресурсы для описания того, как все это взаимосвязано, чтобы дать nbconvert полную функциональность. Также, возможно, было бы лучше отключить различные команды, для которых не могли быть разрешены зависимости

На данный момент я без проблем могу сказать, что вам нужен установленный Latex для преобразования записных книжек в PDF. Зависимости - это не то, чего нам нужно избегать.

Проблема в том, что в настоящее время все (большинство?) Дистрибутивов в стиле RHEL заблокированы для преобразования. Сгенерированный латексный код полагается на adjustbox.sty и нет доступного пакета, который предоставляет этот файл (влияет на: RHEL6, RHEL7, EPEL6, EPEL7, Scientific и предположительно CentOS тоже)

Похоже, это оскорбительный запрос на перенос в отношении исходной ошибки OP:

  • # 3578 Используйте Adjustbox, чтобы указать размер фигуры в nbconvert -> latex
    490

Было бы интересно поэкспериментировать с jsPDF .

@serverhorror уже существует отчет об
В качестве альтернативы, локальная установка adjustbox.sty не должна быть сложной, см. Комментарии здесь

@jakobgager Я это видел. К сожалению, RHEL7 (EPEL7) еще даже не включен в дорожную карту (waaaaayyyy вне моего контроля).

На данный момент я просто буду использовать локально исправленную версию, которая в основном возвращает # 3578.

+1

Если вы используете (в ubuntu 15.04):

apt-get install --no-install-recommends texlive-latex-extra texlive-fonts-recommended

Вы уменьшаете размер загрузки до 24 МБ (вместо 606 МБ). Не скачивает некоторую документацию (около 300 МБ)

Спасибо, что участвовали в этом, все, я прохожу и очищаю старые проблемы, которые были решены, и эта созрела для закрытия.

В этом выпуске было много хороших дискуссий, но резюмирую:

1. При сбое преобразования теперь отображается более подробное сообщение. В записной книжке версии 4.2.2 удаление файла .sty на моем компьютере вызывает сообщение об ошибке, которое выглядит следующим образом:

screen shot 2016-10-27 at 11 57 41 am

2. мы не собираемся предоставлять преобразование записных книжек в PDF как веб-сервис
3. если сторонний поставщик делает такой веб-сервис доступным, загрузка встроенной записной книжки явно указывает на использование LaTeX с # 7951 - и выглядит так:

screen shot 2016-10-27 at 12 01 12 pm

4. Что касается размера требуемых зависимостей, @iuridiniz предложил

Любое дальнейшее обсуждение этих и связанных с ними вопросов, вероятно, следует проводить на https://github.com/jupyter/nbconvert .

Удачного взлома! :галстук-бабочка:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги