Q100610: Nuke 13以降はPython 3の構文エラーで起動に失敗する

まとめ

Nuke 13.0以降、Python 2はサポートされなくなり、Pythonスクリプトと統合はPython 3との互換性を保つために更新する必要があります。これは、 Nuke 13をVFX Referenceプラットフォーム2020に合わせるためのアップデートによるものです。

詳細情報

Nuke 13.0v1のリリースに伴い、PythonライブラリがPython 3.7にアップデートされました。Nukeバージョン12.2以前ではPython 2.7ライブラリが使用されていました。これによりNuke Nukeに影響が出る可能性があり、構文エラーが発生してNukeが起動しないなどの問題が発生する可能性があります。

すべての Python スクリプトが少なくとも Python 3.7 と互換性があることを確認し、サードパーティの開発者に連絡してツールを Python 3.7 と互換性があるように更新してもらうことをお勧めします。

注:執筆時点では、最新のNukeリリース16.0v4では、ここで言及されているようにPython 3.11.7を使用しています: サードパーティのライブラリとフォント

この問題のトラブルシューティングには、コマンドラインで--safeフラグを指定してNukeセーフモードで起動するのが良いでしょう。また、.nukeディレクトリに互換性のないPythonスクリプトがないか確認することも有効です。セーフモードと.nukeディレクトリに関する詳細は、以下の「参考資料」セクションをご覧ください。

Nuke Nukeバージョンごとに異なるプラグインパスを読み込むように設定することも可能です。これは、 Nuke 13以降への移行に役立つ可能性があります。設定方法については、こちらをご覧ください。 Q100465: 異なるバージョンのNukeのプラグインをロードする方法

ユーザーがコードでよく遭遇する変更点の一つは、printコマンドの変更です。Python 2ではprintコマンドはprint “your text here”という形式でした。一方、Python 3ではprint(“your text here”)のように括弧で囲む必要があります。

このエラーの例は、ターミナル/コマンド プロンプト ウィンドウに表示されます。

SyntaxError: Missing parentheses in call to 'print'. Did you mean print("your text here")


次のような、init.py または menu.py のエラー ダイアログが表示される場合もあります。

さらに詳しく

上記の解決策を試した後でも、 Nuke起動時に Python 関連の問題が引き続き発生する場合は、サポート リクエストを開いて、発生した問題の正確な内容と実行したトラブルシューティング手順をお知らせください。

サポートリクエストを開く方法の詳細については、次の記事を参照してください: Q100064: サポートチケットの発行方法

    私たちはそれを聞いて申し訳ございません

    理由をお聞かせください