Python FAQ(커스터마이즈 및 확장)

  1. RV 명령 API 설명서는 어디에 있습니까?

    현재로서는 문서를 읽을 수 있는 Python만의 방법이 없습니다. 하지만 Mu API 문서 브라우저에 관련 정보가 있습니다. 도움말(Help)->Mu 명령 API 브라우저(Mu Command API Browser)를 선택하면 문서 뷰어가 실행됩니다. 왼쪽 끝 열에 파란색 아이콘이 표시된 항목들이 있는데 이 항목들이 Mu 모듈(대개 Python 모듈에 해당)입니다. Mu의 "commands" 및 "extra_commands" 모듈은 문서화되어 있으며, 두 모듈이 Mu 및 Python 모두에 대한 RV API를 구성합니다. 그래서 해당 문서를 읽어 보면 대략적인 그림을 그려볼 수 있습니다(반환되는 실제 유형도 나와 있음).

    문서 브라우저 참고 사항: 창 맨 위에 검색란이 있습니다. 

  2. 어느 버전의 Python을 사용 중입니까?

    Python 2.7

  3. 버전을 인식하지 않도록 만들 수 있습니까? 왜 Python 2.7입니까?

    어떻게 할 수는 없다고 해도 파운드리가 무엇을 사용 중인지 트래킹할 계획입니다. 사실 이미 너무 복잡한 상황입니다. 
     
  4. rv.commands에서 함수를 호출하려고 하면 실패합니다. 이유가 무엇입니까?

    아직 저희가 기본 인자를 처리하고 있지는 않으므로 여러분이 모든 명령 인자를 제공해야 합니다. 업데이트: 이제 rv 4가 Python에서 기본 인자를 처리합니다.
     
  5. Python에서 UI를 어떻게 만듭니까?

    PySide 또는 PyQt를 사용하여 Qt 인터페이스 구성요소를 만들 수 있습니다(RV는 Qt Application). Python에 이 Qt 래퍼의 컴파일된 버전을 배포하지 않지만 둘 다 이상 없이 작동합니다. PyQt가 Qt API의 보다 훨씬 일반적인 래퍼입니다. PyQt 또는 PySide를 컴파일할 때에는 RV에서 사용된 것과 가까운 Qt 버전(현재는 Qt 4.8.7)과 링크해야 RV에서 작동할 가능성이 가장 높아집니다.

    완벽하게 하려면 PyQt 메이커가 코드를 사용하는 데 (RV에서도) 라이센스가 필요한지 파악해야 합니다. 저희는 해당 라이센스가 없으며, 있다고 해도 최종 사용자에게 양도할 수 없습니다(라이센스 소유자의 사용 권한만 부여됨). 하지만 라이센스 조건을 완벽히 준수하려면 라이센스를 구입하면 됩니다. PySide에는 이러한 라이센스 요건이 없습니다.

  6. Mu가 OpenGL을 사용하는 방식으로 제가 뷰에 그릴 수 있습니까? 

    예. 렌더 이벤트에 바인딩된 경우 PyOpenGL을 이미 설치했다면 이를 사용하여 그릴 수 있습니다.

  7. OpenGL 그리기 때문에 Python이 성능 문제를 유발할 수 있다고 했습니까?

    예. 하지만 틀렸을지도 모릅니다. 그 문제는 Python의 순환 가비지 컬렉터가 렌더 중간에서 실행되거나 실행되지 않는 문제였습니다. 이는 메모리가 거의 고갈되었을 때만 실행되는 것으로 알려져 있습니다.

  8.  기존 Mu 코드를 Python에서 호출할 수 있습니까?

    예. 참조 매뉴얼에 관련 섹션이 있습니다. Python에서 MuSymbol을 사용하여 Mu 함수를 래핑한 다음 호출할 수 있습니다. 이것이 명령 API가 Python에서 구성되는 방식입니다. 

  9. Python은 RV(및 유니코드 지원)에 맞게 어떻게 컴파일되어 있습니까?

    OS X에서는 실제로 Python을 컴파일하지 않고, 대신 OS에서 제공하는 Python 2.7 설치 및 .dylib을 사용합니다. 이 버전은 유니코드에 대해 UCS2를 사용합니다. 시스템 Python 2.7에 로드되는 모듈은 RV에서 작동합니다.

    Windows에서는 3.12.14 이하의 경우 VC9, 3.12.15 이상의 경우 VC10을 사용하여 UCS2를 컴파일합니다.
     
    Linux는 대부분의 배포판이 UCS4를 사용하기 때문에 UCS4입니다. 저희는 Linux에서의 컴파일을 위해 GCC 4.2를 사용합니다.
     
  10.  모듈 XXX가 누락되었습니다. 어디에서 얻을 수 있습니까?

    모듈이 "표준" Python 모듈(현재 위치한 플랫폼용 Python 배포와 함께 제공)인 경우 대개 포함되어 있습니다. openSSL 종속 모듈의 경우, openSSL을 빌드할 수도 있지만 포함하지는 않습니다. OS X에서는 시스템 Python 2.7을 사용하기 때문에 모듈이 시스템 Python 인터프리터에서 실행되는 경우 RV에서 실행되어야 합니다. Linux에서는 모든 것이 포함되도록 하기 위해 노력했습니다. Windows에서는 Python 바이너리 배포가 컴파일되는 것과 같은 방식으로 컴파일합니다. 

    모듈이 포함되어 있지 않고, CPython 모듈(C로 작성)인 경우 직접 컴파일해야 합니다.

  11. Python의 commands.bind() 함수는 Mu에서와 같은 방식으로 작동하지 않습니까? 어떻게 사용합니까?

    Python 버전은 현재 bind()에 대한 모든 인자를 필요로 합니다. 이를 "약식"으로 만들려면 다음과 같이 합니다.
    bind("default", "global", event, func, event_doc_string). 
     
  12. Python for RVIO에서 리더 스크립트와 오버레이 스크립트를 실행할 수 있습니까?

    아직은 안 됩니다. 구현하고 싶기는 하지만 많은 작업이 필요한 일이라 당장은 일정에 없습니다.
     
  13. Python <-> Mu 브리지는 성능을 느려지게 하지 않습니까?

    자주 접하는 질문은 아닌 것 같지만 대답을 드리자면 전혀 아닙니다. 둘 사이의 인터페이스 형성에 사용되는 MuSymbol 유형은 해석된 Mu 코드가 Python에서 "네이티브" Mu 함수를 호출하는 경우 이를 완전히 건너뛸 수 있습니다. 모든 RV 명령은 네이티브 Mu 함수입니다. 따라서 Python 호출과 실제 기본 RV 명령(대개 언어 인식 안 함) 사이에는 차이가 거의 없습니다. 

    Python 브리지에 대한 Mu 호출은 약간 더 까다로운데, 이는 기본적으로 CPython API 노출 방식입니다. 따라서 C에서 Python 함수를 호출하는 것과 거의 같은 노력이 듭니다.
     
  14. 저의 외부 Python 프로세스(RV에서 호출)가 지금은 다르게 동작하는 이유가 무엇입니까?

    RV가 실행을 위해 $RV_HOME/plugins/Python 및 $RV_HOME/lib/python2.6을 통합하도록 PYTHONPATH를 수정하기 때문일 것입니다. 분기(fork)된 프로세스는 PYTHONPATH를 상속합니다. 외부 프로세스를 실행하기 위해 QProcess를 사용 중인 경우 QProcess.start()를 호출하기 전에 QProcess.setEnvironment()를 호출하여 PYTHONPATH를 설정할 수 있습니다.
팔로우

0 댓글

댓글을 남기려면 로그인하세요.