Ipython: IPython内から珟圚のipynbファむルのパスを把握するにはどうすればよいですか

䜜成日 2017幎01月05日  Â·  15コメント  Â·  ゜ヌス: ipython/ipython

iPython内から珟圚のipynbファむルを把握する方法はありたすか

ナヌスケヌスIPython内からシミュレヌションをトリガヌしたい。 すべおを文曞化しおおくために、IPythonノヌトブックを結果フォルダヌにコピヌしたす。理想的にはIPython内からコピヌしたす。

この問題でWebを怜玢するず、そのような機胜に倚くの関心があるように芋えたすが、stackoverflowで提瀺された゜リュヌションはすべお少しハッキヌなようでした。 それずも、これはすでに実装されおいたすか

最も参考になるコメント

すみたせんが、これで

!echo %cd% # under windows
!pwd # under linux/mac

必芁な情報が埗られたす。
再利甚するには、次のようにしたす。

myInfo01 = !echo %cd% # under windows
myInfo02 = !pwd # under linux/mac

党おのコメント15件

動䜜しないハックPythonコヌドを実行するJavascriptの衚瀺がなければ、それは䞍可胜です。

カヌネルこの堎合はIPythonの理由は次のずおりです。

  • 単䞀のファむルから実行されおいない可胜性がありたす
  • 1぀のファむルであっおも、そのファむルはノヌトブックではない堎合がありたす。
  • ノヌトブックであっおも、ノヌトブックがファむルシステム䞊にない堎合がありたす。
  • ファむルシステム䞊であっおも、同じマシン䞊にない堎合がありたす。
  • 同じマシン䞊にある堎合でも、ファむルぞのパスがIPythonコンテキストで意味をなさない堎合がありたす。
  • たずえそれが意味をなすずしおも、Jupyterプロトコルはそうするように蚭蚈されおいたせん。 そしお、この抜象化を短期的たたは長期的に倉曎する予定はありたせん。

ただし、倖郚スクリプトを介しおノヌトブックサヌバヌなしでノヌトブックを実行し、同時にノヌトブックをコピヌするこずもできたす。 これはjupyter nbconvert --execute --output-dir='results/'の簡単な方法です

お圹に立おば幞いです。

たぶん、あなたがこの問題をすぐに閉じたずいう事実は、このトピックがどこかで培底的に議論されたこずを瀺しおいたす。 その決定をよりよく理解できるように、ディスカッションぞのリンクを教えおいただけたすか

そうでなければ、私は疑問に思っおいたすカヌネルが開始されるずすぐに、iPython環境がPython倉数を蚭定できないのはなぜですか この倉数は、iPythonノヌトブックのURLなど、カヌネルがどのように開始されたかに関する情報を保持できたす。

これが培底的に議論される特定の堎所はありたせん、それは倚くの堎所にありたす、しかし私は前に芋た別の比喩を再利甚したす。

あなたは本の䜜家です。 あなたの読者は定期的に䞀぀のこずを望んでいたす。 圌らがキャラクタヌを識別するずき、圌らは䞻人公が圌らがするのず同じ目の色を持っおいるこずを望んでいたす。 どうやっおそれをしたすか たあ、あなたができない本の䜜家ずしお。 䞀人䞀人の答えは明癜ですが、倧倚数のナヌザヌにずっおはできたせん。

あなたは10の目の色で10のバヌゞョンを印刷しお、読者に遞ぶように頌むかもしれたせん。 しかし、読者はそれをする必芁がありたす。

IPythonカヌネルでも同じです。

カヌネルは䜕がそれを始めたかを知りたせん。 開始されたものは、env倉数を蚭定するこずを_詊みる_こずができたしたが、このコンテキストでは意味をなさないかもしれたせん。 ノヌトブックが接続されおいない可胜性がありたす。 開始するプロセスはPythonではない可胜性がありたす。

コヌドを実行するこずが唯䞀の目的であるものカヌネルがありたす。 ファむルシステムにアクセスできる堎合ずできない堎合がありたす。Pythonである堎合ずそうでない堎合がありたす。 フロント゚ンドにすでに接続されおいる堎合ずされおいない堎合がありたす。 寿呜の間に耇数のクラむアントに接続されおいる堎合ず接続されおいない堎合がありたす。

したがっお、いずれの堎合も、カヌネルにドキュメントが添付されおいるかどうか、およびそれが䜕であるかに぀いお明確な答えを出すこずができたすが、䞀般的な応答ずその取埗方法は䞍明です。 質問は意味をなさないか、少なくずも私たちはそれを芋぀けおいたせん。

したがっお、本の読者ずしお、あなたは遞択を行い、カヌネルに_あなた_が正しいず思うファむル名を䌝える必芁がありたす。

ノヌトブックサヌバヌが起動するず、それにリンクされおいるファむルの名前が蚭定されたす。 これを行うには、䞻にコンポヌネントを結合するのではなく、技術的な課題がありたすが、可胜であるず想定しおいたす。 頭のおっぺんからいく぀か質問がありたす。

nbconvertを介しおノヌトブックを実行する堎合、どのような名前を蚭定したすか

  • 入力がstdinの堎合
  • 入力がネットワヌクの堎合
  • 出力ノヌトブック= input_notebook
  • 耇数のノヌトブックを入力する「ブックブック」モヌド。
    コン゜ヌルを取り付けるずき、どのような名前を蚭定したすか
    耇数のノヌトを添付する堎合、どのような名前を蚭定したすか

    • 耇数のノヌトブックを連続しお実行する堎合、どのような名前を蚭定したすか

    • 耇数のノヌトブックを䞊行しお実行する堎合、どのような名前を蚭定したすか

      ファむルシステムpostgres DBのない環境で䜜業する堎合、どのような名前ですか

      バむナリたたはASCII 定矩された゚ンコヌディング

      FullPathのノヌトブック名

      同じマシン䞊にない堎合はどうなりたすか

      ノヌトブックがオンザフラむで生成されたために実行が玔粋にメモリ内にある堎合はどうなりたすか

      名前ずprint()がある堎合でも、ファむルの名前が倉曎された堎合はどうなりたすか

  • カヌネルがオフのずきに名前が倉曎されたしたか
  • カヌネルの実行䞭に名前が倉曎されたしたか
    ファむルに耇数の名前が付いおいる可胜性がある堎合のリアルタむムコラボレヌションずハヌドリンク、どちらが正しいですか

䞊蚘の質問のどれも私にずっお明確な答えを持っおいたせん。 コヌナヌで私たちをブロックするこずなく、それを正しく行う方法に぀いおコンセンサスがあれば、私たちはそれに぀いお考えたす、そしおそれからすべおの技術的な困難がありたす。

それが少し明確になるこずを願っおいたす。このようなハック的なこずを詊すこずはできたすが、それらがすべおの人を満足させるこずはめったにないこずがわかりたす。

すみたせんが、これで

!echo %cd% # under windows
!pwd # under linux/mac

必芁な情報が埗られたす。
再利甚するには、次のようにしたす。

myInfo01 = !echo %cd% # under windows
myInfo02 = !pwd # under linux/mac

プロセスCWDが倉曎されたり、ノヌトブックが保存されおいる堎所にない堎合もあるため、機胜したせん。

少なくずも、新しいノヌトブックサヌバヌでノヌトブックを開き、コヌドを実行しおカヌネルを暗黙的に起動するず、ipynbファむルが含たれおいるフォルダヌがpwdになるこずが保蚌されおいたすか

ipythonがすべおの奇劙な゚ッゞケヌスを魔法のように凊理できないずいう理由だけで、誰も予想しおいなかったず思いたすが、人々が実際に気にかけおいる_simple_ケヌスノヌトブックずデヌタファむルを同じものに枡すなどのような_simple_ルヌルを持぀こずを止めるべきではありたせん孊生ぞのフォルダ

少なくずも、新しいノヌトブックサヌバヌでノヌトブックを開き、コヌドを実行しおカヌネルを暗黙的に起動するず、ipynbファむルが含たれおいるフォルダヌがpwdになるこずが保蚌されおいたすか

いいえ。

カヌネルがipynbず同じマシン䞊にあるこずは保蚌されおいたせん。たた、ipynbファむルが存圚する、存圚する、䞀意である、たたは䞀意のパスを持っおいる、あるいはファむルである/ファむルであるずいう保蚌もありたせん。 䟋Googleドラむブでのリアルタむムコラボレヌション。

私は自分の質問を十分に定匏化できなかったず思いたす。 200人の孊生がPython環境をセットアップしたす。ほずんどの堎合、自分のラップトップにanacondaをむンストヌルしたす。 コンピュヌタヌの緎習問題をノヌトブックずフォルダヌ内のデヌタファむルずしお枡したす。 1぀はノヌトブックをpostgresDBに保存し、2぀はノヌトブックがあるラップトップずは異なるマシンでカヌネルを実行する堎合がありたす。 3人の孊生が䞀緒にGoogleドラむブでリアルタむムコラボレヌションを蚭定したす。 6人の生埒は、あなたがこれたで蚀及したかもしれないし、蚀及しなかったかもしれない䜕か他のこずをするでしょう。 私は䞻に、指瀺に埓い、自分のラップトップWindows、OS X、たたはLinuxでフォルダヌを解凍し、同じラップトップでノヌトブックサヌバヌを起動するノヌトブックサヌバヌ゚クスプロヌラヌたたはノヌトブックファむルをダブルクリックしたす、最初のセルを実行しお、同じラップトップ䞊で新しいカヌネルを暗黙的に開始したす。 問題は、cwdが_それらの_孊生に察しお機胜するかどうかです。 os.getcwd()が機胜しなかったため、玄15人の孊生が私のオフィスに来るのでしょうか、それずも50〜100に近づくず予想する必芁がありたすか

私は䞻に、指瀺に埓い、自分のラップトップWindows、OS X、たたはLinuxでフォルダヌを解凍し、同じラップトップでノヌトブックサヌバヌを起動するノヌトブックサヌバヌ゚クスプロヌラヌたたはノヌトブックファむルをダブルクリックしたす、最初のセルを実行しお、同じラップトップ䞊で新しいカヌネルを暗黙的に開始したす。

はい、os.cwdたたはc = !cwdを䜿甚しおも、これらのナヌザヌには機胜したす。 そしお私はあなたの文脈で圌らにそうするように頌むのは良いこずだず思いたす。 しかし、そうではない_䞀般的な_ナヌスケヌスずしお。 たた、このバグトラッカヌは、このメ゜ッドの明瀺的な承認ずしお枡される可胜性があるため、このバグトラッカヌに蚘茉する際には泚意が必芁です。 そしお、私たちは人々が深く読たないようにしたこずを知っおいたす。

十分に公平です。正確なコミュニケヌションに関心をお寄せいただきありがずうございたす。

スクリプトがブックで初めお実行され、スクリプトを倉曎する前は、 os.cwd()がノヌトブックディレクトリです。
だから私が私のコヌドでよく䜿うのは

if not 'workbookDir' in globals():
    workbookDir = os.getcwd()
print('workbookDir: ' + workbookDir)
os.chdir(workbookDir)  # If you changed the current working dir, this will take you back to the workbook dir.

どうやら、ここのナヌザヌのほずんどは、特定の展開で実際に意味するものが䜕であれ、「ノヌトブックのパス」に実際にアクセスするのではなく、そのノヌトブックに関連付けられおいるリ゜ヌスにアクセスするこずを望んでいたす。展開の詳现は抜象化されおいたす。

明らかに、関連デヌタず䞀緒にノヌトブックを配垃するこずは、䞀般的で幅広いナヌスケヌスです。 カヌネル内からリ゜ヌスにアクセスするための抜象的なメカニズムが必芁なのかもしれたせん。 その堎合、おそらくノヌトブックからのメタデヌタの助けを借りお、そのリ゜ヌスアクセスAPIを適切にセットアップするのは、展開぀たり、ノヌトブックサヌバヌのむンストヌルの責任になりたすか 次に、ロヌカルノヌトブックサヌバヌは、デフォルトで、ノヌトブックに盞察的なパスからこれらのリ゜ヌスを実際に提䟛するこずができたす。 他のデプロむメントでは、別個のむンタヌフェヌスアップロヌド・メ゜ッドやリ゜ヌスを指すURLなどを提䟛するか、単にむンタヌフェヌスをたったくサポヌトしない堎合がありたす。

今では手遅れかもしれたせんが、Colaboratoryがここでの䜜業に圹立぀可胜性があるようです。
https://colab.research.google.com/notebooks/welcome.ipynb

ノヌトブックの起動時にグロヌバルに挿入される「_dh」ずいう名前の倉数がありたす。 これに関するドキュメントは怜玢しおいたせんが、これはノヌトブックのディレクトリのようです。 しかし、それは今私のために働いおいたす。

@SurealCerealの゜リュヌションに䌌おいたす

if not 'workbookDir' in globals():
    workbookDir = os.getcwd()

私はむンポヌトの盎埌にこれを䜿甚しおいたす

try: ipynb_path
except NameError: ipynb_path = os.getcwd()

「゚ラヌ」ずいう蚀葉に぀いおの䜕かが、その䜍眮や存圚をいじる前に、私によく考えさせたす。

たたは

if 'workbookDir' not in globals():

もう少し読みやすくなりたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡