Q100716: Windowsで Nuke 起動したときに発生する「_ctypesのインポート中にDLLのロードに失敗しました」というエラーを解決する方法

症状

Windows マシンでNukeを起動しようとすると、一部のユーザーは継続的にクラッシュし、コマンド プロンプトに次のようなエラー メッセージが表示されます。

ImportError: DLL load failed while importing _ctypes: The specified module could not be found.

この記事では、このエラーを防ぐために実行する必要がある手順と、このエラーが発生する理由について説明します。

原因

現在、以下のプログラムがDLL load failed while importing _ctypes 」というエラーを引き起こし、 Nuke 16 の起動を妨げる可能性があることを認識しています。ただし、これは網羅的なリストではなく、他のアプリケーションでも問題が発生する可能性があることにご注意ください。

この問題は、Windowsレジストリに追加された「アプリケーションパス」がNukeのPythonバージョンと競合することで発生します。この問題は今のところNuke 16の起動時にのみ報告されていますが、他のバージョンのNukeにも同じ問題が発生する可能性があります。

Pythonを使用するサードパーティ製アプリケーションがインストールされると、Windowsレジストリを介してPythonモジュール検索パス( sys.path )に独自のディレクトリが追加されることがあります。アプリケーションのPythonのバージョンがNukeが使用するバージョンと同じ場合、これらの追加の「アプリケーションパス」により、 Nuke実行に必要なPythonモジュールにアクセスしてインポートできなくなる可能性があります。

例えば、 Spyder 6はPython 3.11を使用していますが、これはNuke 16が使用しているPythonのリリースと同じです。Spyder 6は「アプリケーションパス」を指すレジストリエントリを作成するため、 Nukeを起動すると、これらの場所で特定のモジュールを検索し、見つからない場合は開くことができません。

Windows レジストリ エントリと Python に関する詳細については、 「参考資料」セクションを参照してください。

解決

この問題を解決するための選択肢は、問題の原因となっているプログラムによって異なります。そのため、まず最初に、 Nukeの Python バージョンと競合している特定のプログラムを特定する必要があります。

そのためには、以下の手順に従って、 Nuke 16 の Python 実行ファイルを起動し、現在のモジュール検索パスを出力してください。

  1. コマンド プロンプトウィンドウを開き、次のコマンドを実行します。
"C:\Program Files\Nuke16.0v1\python.exe"
  1. 次の 2 行を実行し、 Enter キーを 2 回押してコードを完全に実行します。
import sys
for p in sys.path: print(p)
  1. この時点で、 Nukeが使用する検索パスが出力されるはずです。

比較のために、 Spyder 6をインストールした場合の同じ出力を次に示します。

: これらの追加の強調表示されたパスは手動で削除または編集しないでください。代わりに、以下のいずれかのオプションを使用して問題を解決する必要があります。

原因となっているプログラムを特定したら、ニーズに最適な以下のソリューションのいずれかを選択します。

A) アプリケーションをアンインストールする

問題のあるアプリケーションがインストールされていて、不要になった場合は、プログラムをアンインストールするだけで、 Nuke正常に起動できるようになります。

B) アプリケーションをアンインストールして新しいバージョンにアップグレードする

プログラムをまだ使用する必要がある場合は、既存のバージョンを削除し、 Nukeの Python と競合しない新しいリリースに更新すると、問題が解決する可能性があります。

たとえば、最新のAnaconda3リリースでは Python 3.12 が使用されており、これをインストールしてもNuke 16 の起動機能には影響しません。

C) 「アプリケーションパス」を定義せずにアプリケーションを再インストールする

バージョンをアップグレードせずに引き続きプログラムを使用する必要がある場合、 Anaconda3MiniConda3などの一部のアプリケーションには、インストール中にNukeの起動を妨げる「アプリケーション パス」を無効にするオプションがあります。

Anaconda3 および MiniConda3 の場合、このオプションは「 {program} をデフォルトの Python 3.11 として登録する」と呼ばれ、 Nuke正しく起動するには無効にする必要があります。

Anaconda を Python 3.11 のデフォルトとして定義せずに再インストールするための基本的な手順は以下に記載されていますが、具体的な設定名はアプリケーションによって異なる場合があり、すべてのプログラムにこのオプションがあるわけではないことに注意してください。

i)マシンからアプリケーションをアンインストールします
ii)プログラムの再インストールを開始する
iii)プロンプトが表示されたら、「 {プログラム} をデフォルトの Python 3.11 として登録する」オプション ボックスを無効にします

D) Windowsレジストリを手動で変更する

プログラムを引き続き使用する必要があるが、Windows レジストリに「アプリケーション パス」が追加されないようにするオプションがない場合は、レジストリを調整してこれらのパスを削除することができます。

警告:Windowsレジストリに誤った変更を加えると、お使いのマシンに悪影響を与える可能性があります。そのため、レジストリの変更は慎重に行う必要があります。また、Windowsレジストリを編集する前に必ずバックアップを作成してください。Foundry Foundry 、お客様のマシンに加えられた変更について一切責任を負いません。また、そのような変更により、他のアプリケーションが正常に動作しなくなる可能性があります。


Windows レジストリを使用してコンピュータの設定を変更することに問題がなく、続行したい場合は、管理者として次の操作を実行してください。

i)レジストリエディターを開き、 Computer\HKEY_CURRENT_USER\Software\Python\PythonCore
に移動します。 Computer\HKEY_CURRENT_USER\Software\Python\PythonCore
ii) 3.11 サブフォルダを展開し、 PythonPathフォルダを選択します。

iii)このフォルダを右クリックし、「名前の変更」オプションを選択して、名前を「PythonPath_Disabled」(または同様の名前) に設定します。

iv) Nuke 16 の起動時に DLL ロード失敗エラーが表示されなくなります。表示されない場合は、 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore場所でもこのプロセスを繰り返す必要がある場合があります。

さらに詳しく

レジストリ エントリが Python sys.path変更する方法の詳細については、次の Python ドキュメントを参照してください。

https://docs.python.org/3/using/windows.html#モジュールの検索

競合する Python「アプリケーション パス」を削除した後も引き続き問題が発生する場合は、サポート チケットを作成して、発生した問題の正確な内容と実行したトラブルシューティング手順をお知らせください。

サポート リクエストを開く方法の詳細については、次の記事を参照してください。

Q100064: サポートチケットを発行する方法

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

    理由をお聞かせください