스위치보드(Switchboard)는 Python 애플리케이션으로, 일반적으로 처음 실행 시 pip 을 통해 인터넷에서 몇 가지 종속성을 다운로드하고 설치합니다. 이 가이드에서는 인터넷 연결 없이 디바이스에서 스위치보드를 구성하는 방법을 알아봅니다.
전제조건
- 스위치보드를 설치할 하나 이상의 오프라인 컴퓨터.
- 엔진 버전, 운영 체제, 아키텍처가 동일한 온라인 컴퓨터.
프로세스
PIP_FIND_LINKS 로 인한 버그 때문에 Windows에서는 패키지 다운로드 경로에 공백을 넣지 말아야 합니다.
-
온라인 컴퓨터에서 다음 명령을 사용하여 PyPI에서 Python 패키지를 다운로드하고 로컬에 저장합니다.
> cd /d "<UE 디렉터리>" > Engine\Binaries\ThirdParty\Python3\Win64\python.exe -m pip download -r Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt -d <패키지 다운로드 경로> <패키지 다운로드 경로>디렉터리를 오프라인 컴퓨터에 복사합니다.-
오프라인 컴퓨터에서 다음 명령을 사용하여 스위치보드를 처음 구성할 때 제공된 디렉터리를 바라보라고
pip에 지시합니다.> set PIP_NO_INDEX=1 > set PIP_FIND_LINKS=<패키지 다운로드 경로> -
위의 PIP 환경설정으로 같은 터미널에서
switchboard.bat을 실행합니다. 이렇게 하면 첫 구성이 진행되면서 이전 단계에서 다운로드하고 복사한.whl파일을 처리하고 있다는 것이 표시됩니다.> "<UE 디렉터리>\Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard.bat"
Switchboard.bat 출력 예시
> D:\P4\...\Main\Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard.bat
Using DEFAULT path for Python virtual environment (D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\Python)
Performing Switchboard first-time setup
(INFO) VENV_DIR: D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\Python
(INFO) Creating virtual environment
(INFO) post_setup() - calling install_scripts()
(INFO) post_setup() - invoking pip install
(INFO) pip> Looking in links: d:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\download
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\pyside6_essentials-6.5.3-cp37-abi3-win_amd64.whl (from -r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 1))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\python_osc-1.8.3-py3-none-any.whl (from -r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 2))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\requests-2.24.0-py2.py3-none-any.whl (from -r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 3))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\six-1.15.0-py2.py3-none-any.whl (from -r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 4))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\aioquic-0.9.21-cp37-abi3-win_amd64.whl (from -r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 5))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\shiboken6-6.5.3-cp37-abi3-win_amd64.whl (from pyside6-essentials==6.5.3->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 1))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\chardet-3.0.4-py2.py3-none-any.whl (from requests==2.24.0->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 3))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\idna-2.10-py2.py3-none-any.whl (from requests==2.24.0->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 3))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\urllib3-1.25.11-py2.py3-none-any.whl (from requests==2.24.0->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 3))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\certifi-2024.7.4-py3-none-any.whl (from requests==2.24.0->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 3))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\pylsqpack-0.3.18-cp38-abi3-win_amd64.whl (from aioquic==0.9.21->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 5))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\pyopenssl-24.2.1-py3-none-any.whl (from aioquic==0.9.21->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 5))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\cryptography-43.0.0-cp39-abi3-win_amd64.whl (from pyopenssl>=22->aioquic==0.9.21->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 5))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\cffi-1.16.0-cp311-cp311-win_amd64.whl (from cryptography<44,>=41.0.5->pyopenssl>=22->aioquic==0.9.21->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 5))
(INFO) pip> Processing d:\p4\...\main\engine\extras\thirdpartynotue\switchboardthirdparty\download\pycparser-2.22-py3-none-any.whl (from cffi>=1.12->cryptography<44,>=41.0.5->pyopenssl>=22->aioquic==0.9.21->-r D:\P4\...\Main\Engine\Extras\ThirdPartyNotUE\SwitchboardThirdParty\requirements.txt (line 5))
(INFO) pip> Installing collected packages: chardet, urllib3, six, shiboken6, python-osc, pylsqpack, pycparser, idna, certifi, requests, pyside6-essentials, cffi, cryptography, pyopenssl, aioquic
(INFO) pip> Successfully installed aioquic-0.9.21 certifi-2024.7.4 cffi-1.16.0 chardet-3.0.4 cryptography-43.0.0 idna-2.10 pycparser-2.22 pylsqpack-0.3.18 pyopenssl-24.2.1 pyside6-essentials-6.5.3 python-osc-1.8.3 requests-2.24.0 shiboken6-6.5.3 six-1.15.0 urllib3-1.25.11
(INFO) pip install exited with code 0
(INFO) Finished with return code 0