vaccine_gene&breed_gene 대책

4867 단어 파이썬maya
지금 흘러 들어오고
vaccine_gene
breed_gene
하지만 MayaScanner를 설치하면 감염 전에 멈추게됩니다.
설치하지 않거나 로드하지 않으면 감염됩니다.

실수로 감염되어 버린 실수 씨를 위해 대응책을 생각한다.

처리 확인



감염 "감염"이라고 말하고 있지만, 실제로 무엇이 어떻게 처리되고 있는지를 확인해 본다.

1: 감염된 파일 열기


2: vaccine_gene 스크립트 실행


cmds.internalVar(userAppDir=True) + '/scripts'에 있는 userSetup.py
import vaccine
cmds.evalDeferred('leukocyte = vaccine.phage()')
cmds.evalDeferred('leukocyte.occupation()')

를 추가한다. 존재하지 않으면 생성

3:breed_gene 스크립트가 실행됨

vaccine_gene.notes의 내용을 사용하여
cmds.internalVar(userAppDir=True) + '/scripts'에 vaccine.py 생성

4:maya 재부팅

userSetup.py가로드됩니다.
import vaccine
cmds.evalDeferred('leukocyte = vaccine.phage()')
cmds.evalDeferred('leukocyte.occupation()')

시작시 실행됩니다.

그러면 스크립트 작업이 장면에 추가됩니다.
cmds.scriptJob(event=["SceneSaved", "leukocyte.antivirus()"], protected=True)

5: 파일 저장

vaccine.py가 실행되어 vaccine_gene과 breed_gene을 장면에 생성합니다.

즉, 감염된 상황이란 무엇입니까?
  • vaccine.py가 존재한다
  • userSetup.py에 추가되었습니다

  • 상황이 된다.

    대응



    1:vaccine.py 제거


    cmds.internalVar(userAppDir=True) + '/scripts'
    

    위치를 열고 vaccine.py 및 vaccine.pyc 삭제
    최소한 이것을 해두면 vaccine_gene 과 breed_gene 는 생성되지 않게 된다.
    다만 userSetup 로 이끼 하게 되기 때문에, 개인적으로 userSetup 를 커스텀 하고 있는 경우에는 다음항도 필요.

    2:userSetup.py 재편집


    cmds.internalVar(userAppDir=True) + '/scripts'
    

    위치를 열고 userSetup.py의 내용을 확인하십시오.
    import vaccine
    cmds.evalDeferred('leukocyte = vaccine.phage()')
    cmds.evalDeferred('leukocyte.occupation()')
    

    이 세 줄을 삭제.

    1은 어쨌든, 2는 조금 장애물이 높기 때문에, 정리해 스크립트화해 본다.
    targetPath = cmds.internalVar(userAppDir=True) + '/scripts'
    
    ##vaccine.py vaccine.pycの削除
    if os.path.exists(targetPath + "/vaccine.py"):
        os.remove(targetPath + "/vaccine.py")
        print("remove " + targetPath + "/vaccine.py")
    
    if os.path.exists(targetPath + "/vaccine.pyc"):
        os.remove(targetPath + "/vaccine.pyc")
        print("remove " + targetPath + "/vaccine.pyc")
    
    ##userSetup.py の編集
    ##念のため編集前のファイルをuserSetup_backupとして保存
    if os.path.exists(targetPath + "/userSetup.py"):
        removeLine = [
                    "import vaccine",
                    "cmds.evalDeferred('leukocyte = vaccine.phage()')",
                    "cmds.evalDeferred('leukocyte.occupation()')"
        ]
    
        output = []    
        health = True
    
        with open(targetPath + "/userSetup.py", "r") as f:
            for line in f:
                line = line.rstrip()
    
                if line in removeLine:
                    health = False
                else:
                    output.append(line + "\n")                
        f.close()                
    
        if health == False:
            shutil.copy2(targetPath + "/userSetup.py", targetPath + "/userSetup_backup")
            print("backuped " + targetPath + "/userSetup_backup")            
            with open(targetPath + "/userSetup.py", "w") as f:
                f.writelines(output)
            f.close()        
            print("edited " + targetPath + "/userSetup.py")
    

    그러나 감염 상태에서 Maya를 시작하면
    cmds.scriptJob(event=["SceneSaved", "leukocyte.antivirus()"], protected=True)
    

    이것이 활성이기 때문에 vaccine.py가 생성됩니다.

    추가
    for i in cmds.scriptJob(listJobs =True):
        if "leukocyte.antivirus()" in i:
            index = int(i.split(":")[0])
            cmds.scriptJob(kill = index, force =True)
    

    대상 스크립트 작업을 제거.

    좋은 웹페이지 즐겨찾기