☠️

Dagger(python SDK)にてPermissionErrorがでた際の対処法

2023/01/01に公開

概要

Dagger公式ドキュメントのサンプルプログラムを実行した際に以下のようなエラーに当たったので解決法を記載しておきます。

PermissionError: [WinError 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。: 'C:\\Users\\user\\.cache\\dagger\\temp-dagger-engine-session-h4u3yu6s' -> 'C:\\Users\\user\\.cache\\dagger\\dagger-engine-session-9ad18aca71b1b1ba.exe'

解決方法

Dagger自体のソースファイルに問題があるため、直接ライブラリのソースコードを修正する必要があります。
(この問題はGitHub上のIssueにもあがっており、そのうち正式に修正されると思います。)
参考記事

Daggerライブラリのソースコードの中から dagger/engine/docker.py を開きます。
そこで以下の3行分のインデントを下げることで解決します。(行頭にマイナスを記載している行を+の行のように変更する)

class Engine(BinEngine):
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 finally:
                     cleanup()

-                tmp_bin_path = Path(tmp_bin.name)
-                tmp_bin_path.chmod(0o700)
+            tmp_bin_path = Path(tmp_bin.name)
+            tmp_bin_path.chmod(0o700)

-                engine_session_bin_path = tmp_bin_path.rename(engine_session_bin_path)
+            engine_session_bin_path = tmp_bin_path.rename(engine_session_bin_path)    

以上

Discussion