前提・実現したいこと
tensorflowとMagentaに依存するMagenta_sessionから、音楽生成しようとしているのですが、その中のcreate_note_sequences.pyを動かした際のエラーです。
発生している問題・エラーメッセージ
NameError: name '__file__' is not defined
該当のソースコード
import os import sys sys.path.append(os.path.join(os.path.dirname(__file__), "../../")) import tensorflow as tf from magenta.scripts.convert_dir_to_note_sequences import note_sequence_io from magenta.scripts.convert_dir_to_note_sequences import convert_directory import scripts.target as tgt def main(): output_dir = os.path.dirname(tgt.SEQUENCE_FILE) if not os.path.exists(output_dir): tf.gfile.MakeDirs(output_dir) convert_directory(tgt.MIDI_DIR, tgt.SEQUENCE_FILE, recursive=True) if __name__ == '__main__': tf.logging.set_verbosity("INFO") main()
試したこと
絶対パス取得「file」をsys.argv[0]にすることで可能というサイトがあってのですが、これでも上手くいきませんでした。
どのように実行していますか?
仮想環境内でTensorflow(1.13.1),MagentaがGPUで動くようにしています。
また、Jupyter notebookを使いプログラムを実行しております。
参考として
(https://qiita.com/icoxfog417/items/f198f2e030d861d7bbf4)
上記のサイトを参考にさせていただいています。
紹介していただいたサイトや、いくつか他のものも見ましたが、やはりJupyter notebookで動かすためには、(__file__)ではなく、('__file__')とすると良いようでした。
しかし、実際やってみたのですが、
「Can't determine version for bottleneck」のエラーが出てしまいます。
試しに、print(os.path.abspath('__file__'))が実行できるか調べてみたところ、しっかり表示することができたので、'__file__'の部分は問題がないと思います。C:\Users\user\magenta\magenta_session\__file__
print(os.path.dirname('__file__'))では、エラーはでませんが何も表示されませんでした。本来はdirnameで指定されたパスからファイル名('__file__')をいたものを返すのではないのか思うので、
このへんが原因なのかと考えています。
ちなみにprint(os.path.dirname(os.path.abspath('__file__')))も、しっかり指定されたパスからファイル名('__file__')を除いて返してくれました。C:\Users\user\magenta\magenta_session
あなたの回答
tips
プレビュー