IDEA-Research / X-Pose

[ECCV 2024] Official implementation of the paper "X-Pose: Detecting Any Keypoints"
Other
519 stars 25 forks source link

Windows PermissionError: [Errno 13] Permission denied: 'C:\\Users\\nitin\\AppData\\Local\\Temp\\tmp7x2sbtq5\\tmpyenmu1wn.py' #27

Open nitinmukesh opened 3 months ago

nitinmukesh commented 3 months ago

https://github.com/IDEA-Research/X-Pose/blob/master/util/config.py

model_config_path  C:\tut\LivePortrait\src\config\../utils/dependencies/XPose/config_model/UniPose_SwinT.py
model_checkpoint_path  C:\tut\LivePortrait\src\config\../../pretrained_weights/liveportrait_animals/xpose.pth
embeddings_cache_path  C:\tut\LivePortrait\src\config\../utils/resources/clip_embedding
_file2dict  C:/tut/LivePortrait/src/utils/dependencies/XPose/config_model/UniPose_SwinT.py
Help  C:\tut\LivePortrait\src\utils\dependencies\XPose\config_model\UniPose_SwinT.py True
temp_config_name  tmpyenmu1wn.py
temp_config_dir  C:\Users\nitin\AppData\Local\Temp\tmp7x2sbtq5
filename  C:\tut\LivePortrait\src\utils\dependencies\XPose\config_model\UniPose_SwinT.py
fullpath  C:\Users\nitin\AppData\Local\Temp\tmp7x2sbtq5\tmpyenmu1wn.py
Traceback (most recent call last):
  File "C:\tut\LivePortrait\app_animals.py", line 47, in <module>
    gradio_pipeline_animal: GradioPipelineAnimal = GradioPipelineAnimal(
  File "C:\tut\LivePortrait\src\gradio_pipeline.py", line 341, in __init__
    super().__init__(inference_cfg, crop_cfg)
  File "C:\tut\LivePortrait\src\live_portrait_pipeline_animal.py", line 42, in __init__
    self.cropper: Cropper = Cropper(crop_cfg=crop_cfg, image_type='animal_face', flag_use_half_precision=inference_cfg.flag_use_half_precision)
  File "C:\tut\LivePortrait\src\utils\cropper.py", line 81, in __init__
    self.animal_landmark_runner = AnimalLandmarkRunner(
  File "C:\tut\LivePortrait\src\utils\animal_landmark_runner.py", line 30, in __init__
    self.model = self.load_animal_model(model_config_path, model_checkpoint_path, self.device)
  File "C:\tut\LivePortrait\src\utils\animal_landmark_runner.py", line 43, in load_animal_model
    args = Config.fromfile(model_config_path)
  File "C:\tut\LivePortrait\src\utils\dependencies\XPose\util\config.py", line 194, in fromfile
    cfg_dict, cfg_text = Config._file2dict(filename)
  File "C:\tut\LivePortrait\src\utils\dependencies\XPose\util\config.py", line 91, in _file2dict
    shutil.copyfile(filename,
  File "C:\Users\nitin\miniconda3\envs\liveportrait\lib\shutil.py", line 266, in copyfile
    with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\nitin\\AppData\\Local\\Temp\\tmp7x2sbtq5\\tmpyenmu1wn.py'

If I hardcode the path it works. (temp_config_dir )

@staticmethod
    def _file2dict(filename):
        print("_file2dict ", filename)
        filename = osp.abspath(osp.expanduser(filename))
        check_file_exist(filename)
        if filename.lower().endswith('.py'):
            with tempfile.TemporaryDirectory() as temp_config_dir:
                temp_config_file = tempfile.NamedTemporaryFile(
                    dir=temp_config_dir, suffix='.py')
                temp_config_name = osp.basename(temp_config_file.name)
                print("temp_config_name ", temp_config_name)
                print("temp_config_dir ", temp_config_dir)
                print("filename ", filename)
                print("fullpath ", osp.join(temp_config_dir, temp_config_name))
                temp_config_dir = "c:\\temp"
                shutil.copyfile(filename,
                                osp.join(temp_config_dir, temp_config_name))
                print("=========File copied==========")

shutil.copyfile(filename, osp.join(temp_config_dir, temp_config_name)) is causing the error. The temp diectory is writeable

nitinmukesh commented 3 months ago

Another solution posted

Solved adding the "temp_config_file.close()" before calling the shutil.copyfile function inside "src\utils\dependencies\XPose\util\config.py" file.

Solved adding the "temp_config_file.close()" before calling the shutil.copyfile function inside "src\utils\dependencies\XPose\util\config.py" file.

https://github.com/KwaiVGI/LivePortrait/issues/270#issuecomment-2266650894