Ipython: 「PDFとしてダウンロード」機能は役に立たないエラーメッセージを表示し、大きな依存関係を必要とします

作成日 2015年02月08日  ·  40コメント  ·  ソース: ipython/ipython

新しいノートブック(Ipython 3)を使用してUbuntu 14.10で「PDFとしてダウンロード」機能をテストしたので、これはより多くの機能要求であり、うまく機能します。 問題は、初めて試したときに、必要な依存関係がなく、 ! LaTeX Error: File 'adjustbox.sty' not foundというエラーが表示されたことです。 私はadjustbox.styのみをインストールしてこの問題を回避しようとしましたが、最終的にはtexlive-latex-extraをインストールする必要がありました。

問題は、これには少なくとも584MBのインストールが必要なことです。 これは、非常に特定の機能に対する大きな依存関係です。 したがって、いくつかの提案があります。

  1. ノートブックの500エラーページにadjustboxなどの依存関係が見つからない場合は、よりわかりやすいエラーメッセージを表示します。 現在、エラーは次のようになっています: nbconvert failed: PDF creating failed
  2. 長期的には、ドキュメントからPDFをダウンロードするときにGoogleドライブと同じ方法でWebサービスを使用してPDFに変換するのは素晴らしいことです。
nbconvert

最も参考になるコメント

これにご協力いただきありがとうございます。皆さん、私は対処された古い問題を調べてクリーンアップしています。これは閉鎖の機が熟しています。

この号では多くの良い議論が行われていましたが、要約すると次のようになります。

1.変換が失敗したときに、より詳細なメッセージが表示されるようになりました。 ノートブックバージョン4.2.2では、問題の.styファイルを自分のマシンで削除すると、次のようなエラーメッセージが表示されます。

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

2.ノートブックからPDFへの変換をWebサービスとして提供する予定はありません
3.サードパーティがそのようなWebサービスを利用可能にした場合、組み込みのノートブックのダウンロードは#7951以降LaTeXの使用について明示されており、次のようになります。

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

4.必要な依存関係のサイズについては、このコメントのすぐ上にある@iuridinizによって回避策が提案されています。

これらおよび関連する問題に関する今後の議論は、おそらくhttps://github.com/jupyter/nbconvertで行われる必要があり

ハッピーハッキング! :ちょうネクタイ:

全てのコメント40件

ラテックスエラーはHTMLエラーページに表示されましたか、それともターミナルにのみ表示されましたか?
特定のエラーメッセージがエラーページに到達する限り、私は思う
それが私たちにできることのすべてです。 ラテックスが失敗した理由を解析しようとはしていません-私は
多くの可能な方法があることを確認してください。

PDFを作成する別の方法を調査することは興味深いでしょう。
reportlabやwkhtmltopdfを使用するようなものです。 私たちは絶対に声をかけるべきではありません
デフォルトでWebサービスに。

ラテックスエラーがターミナルに表示されました。 HTMLエラーページで、私が受け取ったメッセージはnbconvert failed: PDF creating failed 。 HTMLエラーページにトレースバックを追加するのはどうですか?

Webサービスを使用するという考えは、ローカルインストールでエラーが発生した場合のフォールバックを意味することを忘れていました。 nbviewerと同様に、ipynbファイルを変換する要求を受信するサーバーを作成するのはかなり簡単ではないでしょうか。

nbviewerのようなWebサービスは、オプトインの人々であり、明示的に自分の仕事を公開し、インターネット上で公開します。
デフォルトでPDF用のWebサービスを使用すると、プライバシーが大幅に低下し、woudlによってノートブックがオンラインで使用できなくなります。

大きすぎたので、今のところそれを行う唯一のサービスはmatjaxです。 また、4.0では、IPythonの一部として出荷します。

@Carreau PDFがオンラインで公開されると言っているのではなく、Ipythonが管理するサーバーで変換され、ローカルマシンに適切にインストールされていない場合のフォールバックとして、ユーザーにダウンロードとして配信されます。

オープンソースの世界では、明示的に要求していないときにデータをサーバーに自動的に送信するソフトウェアを使用することは非常に嫌われています。 明示的なオプションとして「IPythonのサーバーでPDFに変換する」としてそのようなことを行うことも考えられますが、ローカル変換が失敗した場合のフォールバックとしては行いません。

はい、あなたは正しいです、それはより良いでしょう。 変換に問題が発生したことを示すメッセージと、外部Webサービスを使用してファイルをダウンロードするための追加のボタンが表示される場合があります。

それは可能だと思いますが、この場合、なぜPDFで停止するのですか?
クラウドに(完全ですが、まだ制限されている)変換サービスがあると、意味がわかる可能性があり、すでに数回言及されています。 それは「nbviewerapi」になります。 ただし、ユーザーデータの漏えい、ハッキング、またはその他の(まだ)取り組む準備ができていない場合の責任について、問題のある法定責任が発生します。

ただし、企業がローカルネットワークに展開できるようにコードを作成することは問題ありません。

そうですね、PDF変換には大きなダウンロードが必要であり(そのサイズのほとんどはドキュメントですが)、すべてのIpythonユーザーがそのパッケージをインストールする可能性は低いです。 したがって、その機能の使用を開始するための労力を減らすことは素晴らしい追加になると思いました。 他にどのような変換を考えていますか?

実際、本格的な変換サービスを利用するのはあまり嬉しいことではありません。そのようなプロジェクトは、ノートブックの改善を損なうほどの多大な労力を必要とし、その場合、収穫逓減の法則がすぐに適用されるからです。

ユーザーデータ漏えいに関しては、これが機能するために必要なのはpynbファイルだけだと思いました。 変換にはどのような種類のユーザー情報が必要ですか? いずれにせよ、PDFを提供するサーバーはユーザー情報を保存することは想定されていません。

ユーザーデータには、ノートブックのコンテンツ自体が含まれます。 サーバーはその情報を保存することは想定されていませんが、HTTPリクエストを送信すると、サーバーがそれをどのように処理するかがわかりません。

とりあえず、ノートブックをPDFに変換するにはLaTeXをインストールする必要があると言っても問題ありません。 依存関係は避ける必要があるものではありません。

とりあえず、ノートブックをPDFに変換するにはLaTeXをインストールする必要があると言っても問題ありません。 依存関係は避ける必要があるものではありません。

私は@takluyverに同意します。LaTeXをインストールするように依頼するだけで問題ありません...

ラテックスエラーがターミナルに表示されました。 HTMLエラーページで、私が受け取った唯一のメッセージはnbconvertfailedでした:PDFの作成に失敗しました。 HTMLエラーページにトレースバックを追加するのはどうですか?

これは私には良い考えのようですが、他の誰もがこれについてどう思いますか?

これは私には良い考えのようですが、他の誰もがこれについてどう思いますか?

私にはいいですね...

HTMLエラーページにトレースバックを追加するのはどうですか?

これは理にかなっているかもしれませんが、LaTeXエラーは、存在する最も長く、最も情報量の少ないエラーの一部です。 通常、これらの行の多くても1つに意味のある情報が含まれている場合は、数千行のエラー出力を適切に処理する必要があります。

他にどのような変換を考えていますか

すべての。 PDFができるのなら、HTML、RST、マークダウン、さらにはJustLatexを使ってみませんか。
Pandocをインストールするのは簡単ではありません...

ユーザーデータ漏えいに関しては、これが機能するために必要なのはpynbファイルだけだと思いました。 変換にはどのような種類のユーザー情報が必要ですか? いずれにせよ、PDFを提供するサーバーはユーザー情報を保存することは想定されていません。

リンクされた画像などのサイドファイルがある場合は、それらもアップロードする必要がある場合があります。
サーバーが物事を保持することになっていない場合でも、ハッキングされた場合は、
またはそれはあなたに感染したPDFを与えるかもしれません。

データで何ができるか(またはデータがないこと)を想像するのは難しいです。[この例])http://mashable.com/2015/01/28/redditor-muslim-cab-drivers/を参照してください。 NYのタクシー運転手の宗教を推測するために許可されたデータの欠落。

このサービスが便利であることに同意しますが、デフォルトではおそらく有効にしないでしょう。
また、サービスをオンラインで維持し、法的に保護されるためには、開発者と開発者の時間が必要です。
ですから、誰かがやって来てそれをやらない限り、あるいは私たちがそのための資金を得ない限り、それが起こる可能性はごくわずかです。

エラーメッセージの場合、それは意味をなします。

当面は、依存関係を説明し、エラーメッセージを改善する方がよいことに同意します。

ipynbファイルを変換する前にLaTeXがインストールされているかどうかを検出することは可能ですか? それが可能であれば、Ipythonは、非常に特定のファイルに関するエラーをスローする代わりに、役立つエラーメッセージを表示できます。 私の場合、 pdflatexが機能しているように見えたので、別のパッケージがLaTeXディストリビューションをインストールしたと思いました。 このコンテキストで、Ipythonユーザーが遭遇するエラーのほとんどは、LaTeXディストリビューションをインストールしていないことが原因であると思います。 したがって、この問題を早期に検出することは、ほとんどのユーザーにメリットがあります。

おそらく、合理的な妥協案は、トレースバックをHTMLエラーページに追加することですが、デフォルトでは表示しません(長すぎて情報が少ないため)。「トレースバックを見たいですか?」などのテキストをクリックした後、トレースバックは可能性があります。表示されます。 ただし、欠落している依存関係を早期に検出できる場合は、エラーページのメインメッセージでそれを伝える必要があります。

@takluyver

ユーザーデータには、ノートブックのコンテンツ自体が含まれます。 サーバーはその情報を保存することは想定されていませんが、HTTPリクエストを送信すると、サーバーがそれをどのように処理するかがわかりません。

しかし、 @ Carreauが提案したように詮索することを意味しますか? それ以外の場合は、サーバーがその要求をどのように処理するかがわかります。

@Carreau

すべての。 PDFができるのなら、HTML、RST、マークダウン、さらにはJustLatexを使ってみませんか。
Pandocをインストールするのは簡単ではありません...

HTMLやRSTはノートブック自体ですでに利用可能であるため、変換サービスには必要ないと思います。 ただし、MarkdownとLaTeXの変換は便利です。

サーバーがハッキングされた場合、すべてが可能です。 ただし、ハッキングされる可能性は十分に低いため、人々がサービスを開始するのを妨げるものであってはなりません。 代わりに、セキュリティ対策を講じる必要があります(セキュリティ更新プログラムの迅速なインストール、必要なポートのみのオープン、ファイアウォールの有効化、必要なアプリケーションのみのインストール、SSLなど)

pdflatexコマンドが使用可能かどうかはすでに確認していると思います。 ラテックスを実行する以外に、ラテックスを処理するために必要なすべてのファイルが存在するかどうかを確認する良い方法があるとは思えません。

ラテックスを実行する以外に、ラテックスを処理するために必要なすべてのファイルが存在するかどうかを確認する良い方法があるとは思えません。

私はこの疑問を2番目にしています。

HTMLやRSTはノートブック自体ですでに利用可能であるため、変換サービスには必要ないと思います。 ただし、MarkdownとLaTeXの変換は便利です。

nbconvert / nbviewerが行うことを過小評価しないでください:-) SVGを使用している場合は、SVGからPNGに$ inkscapeすることもできます。 あなたはまだそれを打っていません。

サーバーがハッキングされた場合、すべてが可能です。 ただし、ハッキングされる可能性は十分に低いため、人々がサービスを開始するのを妨げるものであってはなりません。 代わりに、セキュリティ対策を講じる必要があります(セキュリティ更新プログラムの迅速なインストール、必要なポートのみのオープン、ファイアウォールの有効化、必要なアプリケーションのみのインストール、SSLなど)

これは大変な作業であり、優れたファイアウォールとNSAを過小評価しないでください。
しかしとにかく、インターネットサービスへのリモート接続が問題外である多くのラボがあります
また、「etc」や「ハッキングされる可能性」の作業量を過小評価していると思います。

たとえばPeterNorvigのような人々がノートブックを使用していることが知られていて、そのサービスを使用する可能性がある場合、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はすでに多くの有用な変換を行っているので、同じものを再度実装する変換サービスは必要ありません。

セキュリティ上の懸念については、それは多くの作業ですが、ほとんど機械的な作業です。 諜報機関に対して、あなたにできることは何もありません。 NSAは、SSLで暗号化された接続を定期的に切断するようになりました。 「etc」での作業量はサイトの特定の要件によって異なりますが、この場合、サービスが単純であるため、追加のニーズはそれほど厳しくありません。

Googleは定期的に産業スパイの標的となっており、外国の諜報機関が情報を盗もうとした場合、選択した攻撃ベクトルがipynb-> pdfサービスになる可能性はほぼ0%です。 彼らは、技術に精通した人々がそのような不注意な方法で機密情報をアップロードしないことを知っています。 さらに、彼らがNorvigのデータを取得したい場合、彼らは彼のラップトップに感染し、追加のセキュリティ対策はすべて無意味になります。

私はlatexとpdflatexの両方をインストールしていますが、RHEL 6と7では、変換がつまずくのは常にadjustbox.styです。 デフォルトではないように見えるこのスタイルのファイルである必要がありますか?

PDFのエクスポートは、Windows 7(またはそれに関してはどのWindows)でも絶望的に困難です。

これがプロセスです:

  1. ミスチューンがありません-pipのインストールは壊れていますが、幸いなことにcondaのインストールが本日利用可能になりました。
  2. Pandocがありません。 pipまたはcondaではまったく利用できないため、18MBのWindowsインストーラーをWebで検索してください。
  3. pdflatexがありません。 これはWindowsでどこで入手できますか? 163 MBのインストールであるMiKTeXと呼ばれるものがあり、それがこのPDFエクスポートを実行するかどうかは明らかではありません。

これまでのところ、これは1つの壊れたpipのインストールとアンインストール、1つの成功したcondaのインストール、そして私たちが近づく前のランダムなサードパーティからの2つの大規模なダウンロードです。

誰もがユーザーのマシンの負荷全体でこれを維持する方法がわかりません。これは、ファイルをPDFとして出力するためだけのものです。 他の多くのソフトウェアパッケージは、依存関係なしにPDFエクスポートを管理します。
より良い方法はありませんか?

@blokeleyうまくいけば、一度だけ対処する必要がありました。 ほぼ毎週対処しなければなりません。
あなたがうまくいくより良い方法を持っているなら、それは素晴らしいでしょう。

これは2つの方法のいずれかで修正できると思います。

  1. ラテックスとその依存関係がインストールされていることを確認してみてください。
  2. PDFに直接出力するPDFテンプレートとエクスポーターを作成します。

(2)は(1)よりも実際は簡単だと思います。 これがチームが人力を割り当てることに興味を持っているようなものかどうかはわかりませんが...私は過去に直接PD​​Fテンプレートを使用していましたが、それは非常に基本的でした。

PDFエクスポートを行うための合理的な方法は2つだけだと思います。

  • ブラウザの印刷プレビューによるHTML-> print-to-pdf
  • ラテックス

誰かが別のツールを使用して別のPDFエクスポーターを作成したい場合は、カスタムのサードパーティエクスポーターとして歓迎されますが、nbconvert自体に付属する新しいエクスポーターとしてはおそらく歓迎されません。

「PDF」から「LatexPDF」に名前を変更するだけの簡単なもので、より詳細なエラーメッセージで十分かもしれません。 現在、HTMLメッセージは「500:内部サーバーエラー」であり、依存関係の問題であることを示すものは何もありません(ユーザーがアクセスできないサーバーコンソールを除く)。

「PDF」から「LatexPDF」への名前変更のような単純なものかもしれません

#7951ですでに行われています

ただし、エラーメッセージはまだ改善されているはずです。

PDFエクスポーターを書きたいのですが、時間は多少限られています(言い訳に飽きることはありません)。 他に何も起こらなければ、この夏のいつかプロトタイプを書いてみます。

それとももっと現実的には、これはGoogle Summer of Codeプロジェクトでしょうか? 少しの現金を寄付させていただきます。

IPythonはGSoCを実行しません-フェルナンドは、人々を指導するのに時間をかける価値がないと非常に強く感じています。

私はWindows7のblokelyと同様の問題を抱えています。
私は仕事でファイアウォールの背後にいて、ソフトウェアをインストールするために特別な許可を得る必要があります。 私の同僚の多くと私はAnacondaディストリビューションを試しています。 インストールする必要があるのはそれだけだと思っていました。
合計3つのアドオン、mathjax、pandoc(これら2つは詳細なインストール手順に記載されています)と、インストール手順にない3番目のMiKTeXが必要だと思います。 pandocページに移動するまで、それはわかりません。 ノートブックとnbconvertをファイアウォールの背後にあるウィンドウで問題なく動作させるのは簡単ではありません!

誰かが使用してPDFに直接行くのどちらかということnbconvert PDF輸出を書くことができReportLabの(今のWindows上のピップインストール可能である)、またはHTMLを生成し、その後のようなツール使用してPDFに変換しwkhtmltopdfweasyprintを。 十分にうまくいった場合は、nbconvertに含めることもできます。 しかし、それは私たちがすぐに自分たちで取り組むつもりであるほど高い優先順位ではないと思います。

@ drafter250 pdfに変換されたベクトル化されたmatplotlibプロット(svg)を使用する場合は、Inkscapeも必要になる場合があります。
@takluyver reportlab

ここには確かに多くの依存関係があります。 nbconvertの場合。 ラテックス、スフィンクス、ジンジャ、ミクテックス、インクスケープ。 など私はこれをすべてまっすぐに保つのに苦労しています。 これらすべてがどのように相互作用してnbconvertに完全な機能を提供するかを説明するためのリソースはありますか。 また、依存関係を解決できなかったさまざまなコマンドを無効にすることをお勧めします。

とりあえず、ノートブックをPDFに変換するにはLaTeXをインストールする必要があると言っても問題ありません。 依存関係は避ける必要があるものではありません。

問題は、現在、RHEL風のディストリビューションのすべて(ほとんど?)が変換からロックアウトされていることです。 生成されたラテックスコードはadjustbox.sty依存しており、そのファイルを提供する利用可能なパッケージはありません(影響:RHEL6、RHEL7、EPEL6、EPEL7、Scientific、そしておそらくCentOSも)

これは、OPの元のエラーに関する問題のあるプルリクエストのようです。

  • #3578adjustboxを使用してnbconvert-> latexで図形のサイズを指定します
    490

jsPDFを試して

@serverhorroradjustboxバグレポートはすでに存在します。 だからうまくいけば、すぐに解決策があるでしょう。
または、adjustbox.styをローカルにインストールするのは難しいことではありません。ここのコメントを参照して

@jakobgager私はそれを見ました。 残念ながら、RHEL7(EPEL7)はまだロードマップに載っていません(waaaaayyyyは私の手に負えません)。

とりあえず、基本的に#3578を元に戻すローカルパッチバージョンを使用します

+1

(ubuntu 15.04で)使用する場合:

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

ダウンロードサイズを(606MBではなく)24MBに減らします。 一部のドキュメントをダウンロードしません(約300 MB)

これにご協力いただきありがとうございます。皆さん、私は対処された古い問題を調べてクリーンアップしています。これは閉鎖の機が熟しています。

この号では多くの良い議論が行われていましたが、要約すると次のようになります。

1.変換が失敗したときに、より詳細なメッセージが表示されるようになりました。 ノートブックバージョン4.2.2では、問題の.styファイルを自分のマシンで削除すると、次のようなエラーメッセージが表示されます。

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

2.ノートブックからPDFへの変換をWebサービスとして提供する予定はありません
3.サードパーティがそのようなWebサービスを利用可能にした場合、組み込みのノートブックのダウンロードは#7951以降LaTeXの使用について明示されており、次のようになります。

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

4.必要な依存関係のサイズについては、このコメントのすぐ上にある@iuridinizによって回避策が提案されています。

これらおよび関連する問題に関する今後の議論は、おそらくhttps://github.com/jupyter/nbconvertで行われる必要があり

ハッピーハッキング! :ちょうネクタイ:

このページは役に立ちましたか?
0 / 5 - 0 評価