핍 이해하기

마지막 업데이트: 2022년 3월 22일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
사진 ⓒ IMDb

Conda Dependencies 클래스

매개 변수를 지정하지 않으면 azureml-defaults가 유일한 pip 종속성으로 추가됩니다.

conda_dependencies_file_path 매개 변수를 지정하지 않으면 CondaDependencies 개체에 Azure Machine Learning 패키지(azureml-defaults)만 포함됩니다. azureml-defaults 종속성은 특정 버전에 고정되지 않으며 PyPi에서 사용 가능한 최신 버전을 대상으로 합니다.

매개 변수

conda 구성 파일에 대한 로컬 경로입니다. 이 매개 변수를 사용하면 기존 Conda 환경 파일을 로드하고 편집할 수 있습니다.

기존 conda 환경 파일을 로드하거나 메모리에서 애플리케이션 종속성을 구성 및 관리하도록 선택할 수 있습니다. 실험을 제출하는 동안 실험이 실행되는 conda 환경을 만들고 캐시하는 준비 단계가 실행됩니다.

Conda와 pip(PyPi) 모두를 통해 종속성을 사용할 수 있는 경우 Conda 패키지에는 일반적으로 설치를 보다 안정적으로 만드는 사전 빌드된 이진 파일이 함께 제공되므로 Conda 버전을 사용합니다. 자세한 내용은 Conda 및 Pip 이해를 참조하세요.

다음 예는 add_conda_package를 사용하여 패키지를 추가하는 방법을 보여 줍니다.

pip 패키지를 추가하고 Environment 개체에 종속성을 설정할 수도 있습니다.

conda 채널을 추가합니다.

CNTK(Microsoft Cognitive Toolkit) 패키지를 추가합니다.

conda 패키지를 추가합니다.

이미 참조된 패키지의 종속성을 추가하면 이전 참조가 제거되고 종속성 목록 끝에 새 참조가 추가됩니다. 이는 종속성의 순서를 변경할 수 있습니다.

Tensorflow conda 패키지를 추가합니다.

Tensorflow pip 패키지를 추가합니다.

conda 종속성을 반환합니다.

새 CondaDependencies 개체를 초기화합니다.

사용자 지정 종속성이 있는 CondaDependencies 개체의 인스턴스를 반환합니다.

pip_packages를 지정하지 않으면 azureml-defaults가 기본 종속성으로 추가됩니다. 사용자 지정 pip_packages 종속성은 기본값을 재정의합니다.

pin_sdk_version이 true로 설정되면 Azure Machine Learning Python SDK의 일부로 배포된 패키지의 pip 종속성이 현재 환경에 설치된 SDK 버전에 고정됩니다.

파이썬 초심자를 위한 PIP 그리고 Virtualenv 소개

파이썬의 신규 개발자들이 반드시 넘어야할 산중 하나는 파이썬 패키징 생태계를 이해하는 것입니다. 이 글에서는 Python for Programming training course에서 다루었던 자료를 기반으로 파이썬 초심자들을 위해 pipvirtualenv 를 설명하고자 합니다.

전제 조건

Python for Programmers 강의는 하나 이상의 개발 언어에 익숙한 개발자들을 대상으로 한 강의였기 때문에, 이 글은 여러분이 어느 정도 수준의 기술 지식을 가지고 있다고 가정하고 있습니다. 커맨드 라인 사용에 핍 이해하기 대해 편하게 느낀다면 이 글을 쉽게 이해하는데 도움이 될것입니다. 이 글에서 예제들은 맥과 리눅스 환경에서 기본으로 사용되는 shell인 bash 를 사용할 예정입니다. 하지만, 사용할 명령어들이 매우 간단하기 때문에 윈도우의 PowerShell에서도 동일한 개념의 명령어를 쉽게 찾아서 사용하실 핍 이해하기 수 있을 겁니다.

이제 시작해봅시다. pipPython Package Index (PyPI) 저장소로부터 파이썬 패키지를 받아 설치하는 패키지 관리 도구입니다. PyPI (가끔 The Cheeseshop 이라고도 불리는)는 third-party 파이썬 오픈소스 패키지들을 위한 저장소입니다. Ruby에서의 RubyGems 혹은 PHP의 Packagist, Perl의 CPAN 그리고 Node.js의 NPM와 비슷하다고 생각하시면 됩니다.

사실 Python은 훨씬 더 기초적인 패키지 매니저인 easy_install을 가지고 있습니다. 여러분이 처음 Python을 설치할때 easy_install은 자동으로 설치됩니다. 하지만, 여러 측면에서 easy_install 보다 훨씬 더 우월한 pip를 사용하는것이 일반적입니다. 먼저, easy_install을 통해 pip를 다음과 같이 설치할 수 있습니다:

이제 pip를 통해 패키지들을 설치할 수 있습니다. (아래 예제에서는 Django를 설치해봅시다):

여기서 우리는 Django를 시스템 전체에 (global) 설치하였습니다. 하지만, 대부분의 경우 패키지를 글로벌하게 설치하지 않아야합니다. 계속해서 읽어보면서 핍 이해하기 이유를 찾아보세요.

Virtualenv

virtualenv 는 아주 구체적인 문제를 해결합니다: 보통 여러개의 파이썬 프로젝트가 하나의 컴퓨터에서 충동을 일으키지 않고 존재할 수 있도록 도와줍니다.

어떤 문제를 해결하나요?

virtualenv가 해결하는 문제를 설명하기 위해, 먼저 virtualenv가 존재하지 않는다고 가정해봅시다. 여러분은 외부 웹 서버에 HTTP 요청을 보내는 파이썬 프로그램을 작성해야하는 상황입니다. 이 일에 뛰어난 Requests 라이브러리를 사용할 예정입니다. 위에서 보여준것처럼 pip를 이용해 Requests 라이브러리를 설치해봅시다.

그런데, pip는 여러분의 컴퓨터 어느곳에 패키지를 설치할까요? 여러분이 pip install requests 명령어를 실행시키면 다음과 핍 이해하기 같은 일이 발생합니다.

pip가 /Library/Python/2.7/site-packages/requests 안에 패키지를 설치하려고 했던 것으로 보입니다. 이 폴더는 파이썬이 알고있는 특별한 폴더입니다. site-packages 내부에 패키지가 설치되면, 파이썬 프로그램에서 이 패키지를 임포트해서 사용할 수 있게됩니다.

하지만, 위에서는 에러가 발생했습니다. 일반적으로 맥에서 “일반 사용자” 는 /Library 폴더에 쓰기 권한이 없기 때문에 위와 같은 에러가 발생한것입니다. 이 에러를 고치기 위해서는 sudo pip install requests 명령어를 실행하면 됩니다. 여기에서 sudo는 “슈퍼 유저”로 명령어를 실행하라는 의미입니다.

이제 정상적으로 동작합니다. python 명령어를 실행해서 Requests 라이브러리를 임포트해봅시다:

지금까지 우리는 pip를 통해 라이브러리를 설치하고, 이 패키지를 import requests 구문을 통해 파이썬 프로그램 내에서 사용해보았습니다. 시간이 지나서, PyPI에서 다른 라이브러리들을 가져와서 우리의 앱을 계속 발전시켰다고 가정해봅시다. 시간이지나 우리가 발전시킨 앱은 뛰어난 성능을 보여주면서 많은 돈을 벌 수 있었고, 사용자들은 약간의 차이가 있는 새로운 프로그램을 작성해달라는 요청을 보내고 있습니다.

사용자들의 요청에 보답하여 새로운 앱을 만들어보고자 새로운 프로젝트를 시작했습니다. 이번 앱에도 requests 라이브러리가 필요한데, 첫번째 앱을 만들었던 이후로 requests 라이브러리에는 새로운 기능이 추가된것을 확인했습니다. 이 추가된 기능이 새로 앱에서 필수적인 상황입니다. 새로운 기능을 사용하기 위해 다음과 같은 pip 명령어로 requests 라이브러리를 업데이트했다고 가정합니다:

모든 것이 좋아보이지만, 우리가 알지 못하는 사이에 재앙은 발생하고 있습니다! 업데이트 이후, 우리에게 돈을 많이 벌어다주던 기존의 프로그램을 돌려보자 프로그램이 에러가 납니다. 왜일까요? 바로 requests 라이브러리가 변경되었기 때문입니다. 아주 작은 변화였지만, 우리의 코드가 더 이상 이 라이브러리를 못쓰는 상황이 벌어진 것입니다. 모든 것이 망가져 버렸습니다.

물론, 새로운 requests API를 사용하도록 기존의 프로그램을 변경해 문제를 해결할 수 있습니다. 하지만, 시간이 소요되고 새로운 프로젝트에서 집중도를 잃게 됩니다. 보통 숙련된 파이썬 개발자는 단지 2개의 프로젝트만 가지고 있지 않습니다. 수십가지 프로젝트를 동시에 진행하고, 각 프로젝트는 수십가지의 라이브러리에 대한 의존성을 가지고 있습니다! 이 라이브러리 전체를 최신버전으로 유지하고 모든 프로젝트에서 동일한 버전의 라이브러리를 사용하도록 만드는 것은 완전 악몽입니다.

어떻게 virtualenv는 이 문제를 해결하나요?

virtualenv는 각 프로그램별로 완전히 독립적인 가상의 환경을 만들어냄으로써 이 문제를 해결합니다. 여기서 환경이란 파이썬 프로그램을 실행시키는데 필요한 모든것의 복사본을 가지고 있는 단순한 폴더입니다. 전체 파이썬 스탠다드 라이브러리 복사본, pip 설치 프로그램 복사본, 그리고 위에서 언급한 site-packages 복사본 등을 포함합니다. 여러분이 virtualenv 도구를 이용해 생성된 pip 복사본을 이용해 PyPI로 부터 패키지를 설치하면, virtualenv 폴더 내부의 site-packages 폴더에 이를 설치합니다. 그리고 설치된 패키지는 이전과 동일한 방법으로 파이썬 프로그램 내부에서 사용할 수 있습니다.

어떻게 virtualenv를 설치하나요?

만약 여러분이 이미 pip를 설치하셨다면, virtualenv를 설치하는 가장 쉬운 방법은 sudo pip install virtualenv 명령어 입니다. pip와 virtualenv는 일반적으로 글로벌 설치가 되어야하는 유일한 패키지입니다. 이 두개를 설치하고 나면 나머지 패키지들은 가상 환경에 설치하면 되기 때문입니다.

사실, virtualenv는 pip의 복사본을 수반하고 있습니다. 그렇기에 여러분이 필요한것은 사실상 virtualenv 뿐입니다. virtualenv는 PyPi에서 설치하는 것이 아닌 독립적인 패키지로 설치가 가능합니다. 이런 방법은 윈도우 사용자들에게 더 쉬울 수 있습니다. virtualenv.org 에 있는 설치 안내를 참고해주세요.

어떻게 새로운 가상 환경을 생성할 수 있나요?

새로운 환경을 만들기 위해서는 virtualenv만 있으면 됩니다. 아주 간단하죠. 여러분 프로젝트의 루트 폴더로 이동한 이후, 아래와 같이 virtualenv 명령어로 생성하면 됩니다.

여기에서, env 는 여러분의 가상 환경을 생성할 폴더의 이름입니다. 아무런 이름을 붙여도 되지만, 보통 env 라고 부르고 프로젝트 디렉토리 내부에 이를 만드는 것이 일반적인 관습입니다. 예를 들어, 여러분이 코드를 ~/code/projectname/ 에 보관한다고 하면, ~/code/projectname/env 가 새롭게 만들어진 환경이라고 생각하시면 됩니다. 하지만, 여러분이 원하는 폴더 이름으로 지으셔도 상관없고, 프로젝트 폴더 외부에 위치시켜도 상관 없습니다.

만약 여러분이 git과 같은 버전 컨트롤 시스템을 사용하고 계신다면, env 디렉토리를 커밋에 포함시키지않는 것을 추천합니다. 반드시 .gitignore 파일에 env 디렉토리를 추가하세요.

어떻게 새로운 가상 환경을 사용하나요?

방금 새롭게 생성한 env 폴더 내부를 살펴보면, 아래와 같은 몇몇개의 폴더를 확인할 수 있습니다.

여러분이 가장 관심을 기울여야하는 폴더는 bin 입니다. 이 폴더는 파이썬 라이브러리의 로컬 복사본과 pip 설치 복사본이 있는 곳입니다. 이제 pip 복사본을 이용해서 vitrualenv 내부에 requests 라이브러리를 설치해봅시다.

동작하는군요! 여기에서 여러분이 sudo를 사용하지 않았다는 점을 기억하세요. 이제 requests를 글로벌로 설치하지 않고 home 폴더내부에 설치하기 때문에, 더이상 sudo가 필요하지 않은것입니다.

이제, Python shell을 실행하기 위해 pytho 명령어를 실행하지 않고, env/bin/python 명령어를 실행하면 됩니다.

하지만, 너무 타이핑을 많이해야해요

virtualenv는 숨겨진 다양한 트릭들을 가지고 있습니다. env/bin/python 그리고 env/bin/pip 를 매번 입력하는 대신, 우리가 만든 가상 환경을 실행시킬 수 있습니다. source env/bin/activate 명령어를 통해서 활성화시키면 이 스크립트는 여러분의 shell의 몇몇 변수들을 일시적으로 조정합니다. 그래서, python 을 타이핑하면 글로벌 python 대신 virtualenv 내부에 있는 Python 실행파일을 얻을 수 있게 됩니다:

이제 여러분이 env/bin/pip install requests 를 입력하는 대신에 pip install requests 라고 입력하면 글로벌이 아닌 우리의 가상환경에 라이브러리를 설치하게 됩니다. 스크립트가 터미널에 준 이 변화는 터미널이 열려있는 동안만 유지가 됩니다. 때문에 여러분이 새로운 터미널을 실행시키면 다시 source env/bin/activate 스크립트를 실행시켜야합니다. 다른 프로젝트로 이동하고 싶다면 deactivate 명령어를 통해 현재 가상환경의 사용을 종료시킬 수 있습니다. 이후, 해당 프로젝트로 이동해 source /env/bin/activate 명령어를 실행시키면 됩니다.

Activating과 Deactivating은 여러분이 타이핑을 하는 것을 감소시켜줍니다. 하지만, 이것을 사용하면 조금은 혼란스러울 수 있습니다. 이를 사용할지 말지는 여러분에게 달려있습니다.

Requirements 파일

pip의 requrements 기능을 사용할때 virtualenv와 pip는 서로 아주 좋은 동료가 됩니다. 여러분의 각 작업 프로젝트는 각기 자기들만의 requirements.txt 파일을 가지고 있습니다. 이 파일을 가상환경에서 필요한 라이브러리들을 설치하는데 사용할 수 있습니다:

더 자세한 정보는 pip 문서를 참고해주세요.

  • pip는 Python Package Index에서 패키지를 설치하는 도구입니다.
  • virtualenv는 python, pip, PyPI 부터 설치된 라이브러리들의 복사본을 만듦으로써, 독립적인 파이썬 환경을 만들어주는 도구입니다.
  • 이는 핍 이해하기 여러분이 동시에 하나의 기기에서 여러개의 프로젝트가 가지는 다른 의존성을 다룰 수 있도록 디자인되었습니다.
  • 설치 관련 가이드는 virtualeng.org에서 찾을 수 있습니다.
  • 설치 후에, env라는 가상환경 폴더를 만들고 싶다면 virtualenv env 명령어를 실행시키면 됩니다.
  • 여러분의 각 프로젝트 마다 이러한 환경이 하나씩 필요하게 됩니다. 이 폴더들을 버전 컨트롤 시스템에서 제외하는것을 잊지 마세요.
  • 가상환경에서 python과 pip를 사용하고 싶다면, env/bin/python 그리고 env/bin/pip 를 사용하면 됩니다.
  • 가상환경을 source env/bin/activate 스크립트로 활성화 시킬 수 있고 deactivate 명령어를 통해 비활성화 시킬 수 있습니다. 선택적이지만 개발을 조금 더 편하게 도와줄 것입니다.

만일 여러분이 일반적인 파이썬 사용자라면 pip와 virtualenv는 서로 떨어질 수 없는 도구들일것입니다. 둘다 상대적으로 이해하기 간단하기에 이들을 명확히 이해하는 것을 추천합니다.

만약 이 글이 파이썬을 배우고 싶도록 여러분을 자극했다면 Python for Programmers 강의를 확인해보세요.

새로운 Meet 레이아웃 자세히 알아보기

Google에서는 사용자의 의견을 반영하여 동영상 피드와 콘텐츠의 공간을 더 많이 확보하고 컨트롤을 더 쉽게 찾을 수 있도록 Google Meet 데스크톱 및 노트북 버전을 단순화했습니다.

새로운 환경은 5월~6월에 출시됩니다. 새로운 환경을 사용할 수 있게 되면 자동으로 다운로드되며 출시가 완료될 때까지는 새로운 환경을 선택 해제할 수 있습니다. 회의를 시작하거나 회의에 참여할 때마다 선택 해제해야 합니다. 이번 출시에 관한 최신 정보를 확인하세요.

컨트롤 찾기

회의 창의 하단 표시줄에서 모든 컨트롤을 볼 수 있습니다. 하단 표시줄이 항상 표시됩니다.

  • 회의 코드는 왼쪽 하단에 표시됩니다.
  • 화면이 최대화되면 왼쪽 하단에 시계가 표시됩니다.
  • 마이크, 카메라, 자막, 손들기, 발표 제어 설정, 추가 옵션 및 전화 끊기 버튼은 중앙에 있습니다.
  • 실수로 전화를 끊지 않도록 하기 위해 회의에서 나가기 버튼은 카메라 및 마이크 버튼과 멀리 떨어진 맨 오른쪽에 있습니다.

도움말: 버튼을 가리키면 버튼 이름이 표시됩니다.

  • 소그룹 채팅방, 설문조사, Q&A 등과 관련해 오른쪽 하단에서 참여 정보, 사용자 패널, 채팅 패널, 활동 패널 등의 회의 세부정보를 확인할 수 있습니다.
  • 중요: Education 사용자에게는 활동 패널 옆에 호스트 제어 버튼이 표시됩니다.

발표 중인 콘텐츠 보기

이제 다른 참여자와 화면에 표시된 내용을 동시에 볼 수 있습니다. 프레젠테이션 피드를 가리키면 다음 작업을 할 수 있습니다.

  • 다른 참여자를 볼 수 있도록 프레젠테이션을 고정 해제하여 타일로 봅니다.
  • 프레젠테이션 오디오를 모두 음소거합니다.
  • 참여자가 발표하기 위해 참여한 경우 회의에서 프레젠테이션을 삭제합니다.

회의 창에서는 프레젠테이션 콘텐츠와 상호작용할 수 없습니다. 발표하는 창에서 슬라이드를 변경하거나 문서를 스크롤할 수 있습니다.

도움말: 보다 원활한 프레젠테이션을 제공하고 미러링을 방지하려면 회의 창과 다른 탭(적극 권장됨) 또는 창에서 콘텐츠를 공유해야 합니다. 전체 화면을 공유해야 하는 경우 가능하면 다른 모니터로 프레젠테이션을 옮기세요.

내 얼굴 보기 변경하기

한 사람과 회의 중인 경우 내 얼굴 보기가 다른 참여자 옆에 플로팅 사진으로 표시됩니다. 다른 사용자가 참여하거나 프레젠테이션이 추가되면 내 얼굴 보기가 그리드에 자동으로 추가됩니다. 두 경우 모두 플로팅 사진과 그리드 간에 전환할 수 있습니다. 선택한 내용은 향후 회의에 사용되도록 저장됩니다.

  • 내 얼굴 보기를 가리켜서 내 영상을 고정 또는 고정 해제하거나, 플로팅 사진에서 타일 핍 이해하기 보기로 전환하거나, 화면에서 동영상 피드를 최소화합니다.
  • 내 얼굴 보기의 크기를 변경하려면 다음 단계를 따르세요.
    • 내 얼굴 보기 창의 모서리를 드래그합니다.
    • 내 얼굴 보기 창을 회의 창의 모서리 4개 중 하나로 드래그합니다.
    • 경우에 따라 카메라에 촬영되는 영역을 나타내도록 내 얼굴 보기 상단 및 하단에 회색 바가 표시될 수 있습니다. 다른 참여자에게는 내 동영상 피드가 잘린 버전으로 표시될 수도 있습니다.

    PIP 모드로 멀티태스킹하기

    PIP 모드를 사용하여 Meet 탭에서 나간 다음 동영상 핍 이해하기 타일이 표시된 플로팅 창을 엽니다. 플로팅 창은 다른 참석자의 동영상을 최대 4개까지 표시하며 다른 애플리케이션 위에 띄운 상태로 사용할 수 있습니다.

    PIP 모드 사용하기

    Meet 탭 하단에서 옵션 더보기 PIP 모드 열기를 차례로 클릭합니다.

    PIP 모드 기능

    • 플로팅 창 위로 마우스를 가져가면 다음과 같은 작업을 할 수 있습니다.
      • 마이크 음소거
      • 카메라 제어
      • 통화에서 나가기
      • Meet 탭으로 돌아가기
      • 채팅 메시지
      • 손들기
      • 참여 요청

      업데이트된 타일 보기 찾기

      타일 보기를 사용하면 한 번에 더 많은 참여자를 볼 수 있습니다.

      • 더 많은 참여자의 타일을 보려면 Meet 창을 최대화하거나 더보기 옵션 에서 레이아웃을 변경하세요.
      • 누군가 말을 하면 타일 윤곽이 파란색으로 표시됩니다.
      • 참여자가 음소거되면 타일에 음소거 아이콘 이 표시됩니다.

      타사 확장 프로그램의 Google Meet 작동 방식 이해하기

      일부 타사 Meet 확장 프로그램으로 인해 예기치 않은 회의 관련 문제가 발생할 수 있습니다. 예를 들어 동영상 피드나 측면 패널이 잘리거나 없는 경우가 있습니다. 최상의 성능을 위해서는 타사 확장 프로그램을 사용 중지해야 합니다.

      핍 이해하기

      사진 ⓒ IMDb

      사진 ⓒ IMDb

      영화의 시작, 우디의 친구인 RC카가 빗물에 떠밀려가기 일보 직전이다. 아슬아슬하게 친구를 구하는 데 성공한 우디와 친구들. 엎친 데 덮친 격. 갑자기 등장한 한 남성이 앤디의 엄마와 몰리로부터 보핍과 양들(램프)을 건네받는다. 그리고 상자에 넣어 차에 실으려는 찰나. 그는 집에 키를 놓고 온 듯 다시 앤디의 집으로 돌아간다. 그 순간 보 핍과 양들을 구하기 위해 등장한 우디. 그러나 보는 이렇게 말한다. "이제는 다음 아이의 차례야. 매일 장난감을 잃어버리는 아이는 많아"라고. 그렇게 우디는 생각지도 못한, 차마 준비하지 못한 이별을 겪는다.

      이 부분에 대해 허문영 영화평론가는 "가슴 아픈 상황에서도 그 순간 우디는 움직일 수 없고 자신에게 새겨진 하나의 표정밖에 지을 수 없다. 인형의 전적인 수동성이라는 운명의 쓰라림이 그의 부동과 무표정에 담겨 있음을 우리는 느낀다. (. ) 이 세계의 가혹한 율법이 요구하는 필연임을 메타적으로 드러날 때, 오히려 풍부한 감정이 표현된다는 점이다."라고 언급한다. [FILO NO.10, 에 대한 단상, P59] 어쩌면 시리즈의 팬이라면 분명 눈치챘을 것이다. 이상하다. 영화의 시작이 경쾌하지 않다. 여러 장르가 혼합된 앤디의 장난감들이 벌이는 일종의 소동극이 아닌, 9년 전에 벌어진 슬픈 이별을 보여준다.

      사진 ⓒ IMDb

      사진 ⓒ IMDb

      왜일까. 조금 더 영화 도입부에 대해 이야기를 해보자. 우디는 더는 '앤디'의 장난감이 아니다. 이제 그의 오른쪽 신발 밑창에는 'Bonnie'라는 이름이 적혀 있다. 위에서 보 핍이 언급한 '다음 아이'를 만난 것이다. 그러나 우디는 전혀 행복해 보이지 않는다. 심지어 보안관의 상징인 가슴에 달린 별 배지가 제시에게 달려 있다. 더 심각한 건 홀로 옷장에 남겨졌다는 사실이다. 그는 '보니의 장난감'이지만 그녀의 보안관은 아니다. 이 상황에 대해 친구인 버즈는 "괜찮아 친구? 다음엔 네가 선택 될거야"라고 걱정한다. 알고 보니 우디는 이번 주에만 세 번이나 보니의 선택을 받지 못했다.

      는 이전 시리즈와 달리 조금 더 우디의 존재와 내면에 집중한다. 관객인 우리가 지켜봐야 하는 것은 무대 위에 오르는 우디의 모습이다. 영화 속 우디의 위치와 역할은 다른 장난감과 비교해 봤을 때 여러 측면으로 다가온다. 유치원에 가기 힘든 보니의 마음을 이해하는 부분에서는 '현자'나 '조력자'로, '포키'를 구하기 위해서 나서는 모습은 '영웅'으로 그리고 모든 장난감의 소중한 친구까지. 그러나 정작 장난감이라는 그의 존재는, 보니가 소유한 장난감이지만, 보니의 장난감이라 부르기 힘든 결핍감을 가진다. 결국 이 영화는 여러 서브플롯과 함께 '우디가 가지는 결핍'을 채워 넣기 위한 이야기이며, 이 글은 그 결핍을 이해하기 위한 탐구이다.

      '토이 스토리 2', 사진 ⓒ IMDb

      비루한 우디의 세속적 희망, 보 핌의 존재에 대한 물음

      잠시 를 떠올려보자. 오른팔이 찢어진 우디는 고대하던 앤디와 카우보이 캠프에 함께 떠나지 못한다. 그렇게 고장이 난 채 방치된 그는 옛 친구인 팽귄 장난감 '위지'를 만난다. 위지는 고장이 나서 제대로 소리가 나지 않아 수리점에 맡길 계획이었으나 안타깝게도 앤디의 엄마는 앤디가 발견할 수 없는 천장에 숨겨놓았다. 그 순간 우디의 운명은 앤디의 장난감보다 위지와 함께 잊혀질 위기에 더 가깝다. 세계관에서 장난감은 결코 영원한 행복을 가질 수 없는 불안전한 존재이다. 물론 그들이 플라스틱에 불과한, 포키와 다를 바 없는 존재이기에 그들 역시 쓰레기라 불러도 무방한 부분도 내포되어 있다.

      영화 속 그 어떤 누구보다도 보니의 애착인형인 '포키'를 지켜야 하는 이유를 잘 이해하고 있는 인물은 오직 '우디'뿐이다. 이것에 대한 근거로 위에서 언급한 '위지'의 존재와 자신이 망가져 본 경험으로 설명할 수 있지만, 결정적으로 우디는 '아이들이 왜 장난감을 필요로 하는지'에 대한 이해, '장난감의 존재와 역할'에 대해서 누구보다 가장 잘 깨닫고 있기 때문이다. 더 나아가 '앤디와의 경험'으로 하여금 아이들이 공통적으로 겪는 시기나 그들의 심리에 대해서 잘 관찰해왔기에 가능한 것이다. 다시 말하면, 우디를 움직이게 하는 것은 여전히 자신의 전 주인인 '앤디'와의 기억인 것이다. 그것이 자신의 존재를 설명하고, 타인('다음 아이'라 부른 편이 더 알맞은)을 이해한다.

      사진 ⓒ IMDb

      사진 ⓒ IMDb

      그러나 정작 '우디'는 이러한 자신의 이해에 대한 인식을 제대로 하지 못한다. 자신이 '포키'를 지키거나 '보니'를 위해서 애쓰는 부분에 대해서 그 어떠한 보상을 받을 수도, 심지어는 자신의 처지(자신이 더 사랑받는 장난감이 되는)가 나아지지 않는 '사실'을 망각한다. 아니. 알 수 없는 희망에 사로잡힌 듯 보인다. 이를테면 개비로부터 포키를 구출하던 도중 고양이의 습격으로 보 핍의 양이 떨어져 다리가 깨지고, 더키와 버니, 기글이 다치는 등 자신을 도와준 친구들이 부상을 당했음에도 포키의 구출에 집착하는 우디의 모습은 분명 보니를 위한 강박으로 다가온다.

      한편으로, 우디가 문제를 해결하는 방법에 있어서 '박애적인 성격'을 띈다. 스피노자는 "박애란 우리가 불쌍하게 생각하는 사람에게 친절하려고 하는 욕망이다"라고 설명한다. [스피노자, ] 여기서 중요한 것은 우디가 불쌍하다고 핍 이해하기 생각하는 대상을 어떻게 이해하는지이다. 그는 포근함과 따뜻함과 같은 '함께 있으면 느끼는 느낌'으로, 즉 '앤디와 함께 했던 기억'(사랑에 가까운)으로 보니, 포키 그리고 개비까지 포용한다. 이러한 그의 방식의 '옳고, 그름'이나 보니의 행복과 무관하게 그의 행복은 여전히 해결할 방도가 없음을 우디는 알지 못한다. 아울러 주인이 어른이 된다는 자연의 법칙에 대해서 계속해서 망각하고자 부단히 노력하는 듯 느껴진다.

      위험을 무릅쓰고 달리는 차 위에서 뛰거나, 자신의 심장 같은 소리박스를 건네주는 우디의 모습을 관객인 우리는 어떻게 볼 것인가.

      위에 질문을 이렇게 바꿔 볼 수 있다. 우디가 가지는 희망은 대체 어떤 것인가. 이 희망은 그가 '일상에서 보는 희망'과 같은 것인가. 우디는 보니의 행복을 원하지만(우디의 희망), 정작 보니는 우디를 선택하지 않는다(일상의 희망). 독일 의학자 '헤르베르트 플뤼케'는 "일상의 희망은 세속적인 것, 필연적이지 않은 것, (. ) 언제나 대상과 관계된다. 그리고 피할 수 없이 허망한 성격을 지난다"라고 말한다. [헤르베르트 플뤼케, ] 인간과 장난감(주인과 노예)이라는 관계에서, 우디는 앤디와 보니까지 심지어 그의 장난감 친구들까지 행복할 수 있도록 나섰지만, 앤디를 지나 보니와의 관계 안에서 '이뤄질 수 없는 일상의 희망'(그들의 장난감으로, 영원히 함께 할 수 있는)을 가진다.

      사진 ⓒ IMDb

      사진 ⓒ IMDb

      그래서일까. '보의 존재'는 가볍게 여길 이벤트적인 요소나 페미니즘적인 관점이 아닌 분명한 이유로 영화 안에 건재한다. 에서 유독 인상적이었던 것은, 우디와 보 핍의 '숏-리버스 숏' 장면이다. 마치 사람 냄새가 난다고 표현할 만큼 두 장난감의 호흡은 분명 사람의 호흡과도 같은 에너지를 가진다. 정작 '핍 이핍 이해하기 해하기 보 핍의 존재'가 영화 속에서 빛나는 순간은 부러진 팔을 아무렇지 않게 테이프로 붙여 회전목마 위로 올라가 우디와 함께 카니발 전경을 바라보는 장면이다. 이후에 보는 우디에게 이런 말을 던진다. "내 인생을 선반에서 앉아 보내기 싫었어 (. ) 바깥세상을 여행해 볼 생각 해보지 않았어?" 그녀의 질문의 우디는 "주인이 없어?"라고 말하며 놀란다.

      결과적으로 우디는 보니가 아닌 보 핍을 선택한다. 이 선택이 가진 이유는 결국 영화 처음으로 돌아갔을 때 비로소 이해할 수 있다. 자신이 보니의 선택을 핍 이해하기 가만히 앉아 기다리듯, 그렇게 보 핍이 떠나는 순간 어떤 선택도 할 수 없는, 자신의 부동과 무표정에 대한 환멸이 빗어낸 결심이다. '헤르베르트 플뤼케'는 그러한 우디의 선택에 대해서 "일상의 희망은 환멸을 안겨준다. 그런데 이 환멸에서, (. ) 신비롭게도 다른 희망이 생겨난다. 세속의 희망이 가져다주는 환멸은 분명 그 자체 안에 세속적인 것으로 이끌리는 환상으로부터 우리를 '해방시켜주는 가능성'을 품는다."라고.

      우디는 그동안 함께 살아온 친구들과 이별을 한다. 물론 이 순간은 보니와의 이별이기도 하다. 더 나아가 지금까지 의 시리즈가 지속적으로 긴장을 주고 갈등을 형성시켰던 '사람-장난감'의 관계가 완전히 끝이 나는 순간이기도 하다. 여전히 카니발의 회전목마는 빙글빙글 돌고 있다. 자유를 선택한 우디는 자신의 내면의 주인이 되어 세상을 향해 나아갈 시간만이 존재한다. 이것의 그의 앞으로의 일상의 희망인 것이다.

      사진 ⓒ IMDb

      사진 ⓒ IMDb

      다시, 에서 우디의 무대는 어디였을까. 여전히 보니의 옷장? 기부 상자? 또 다른 아이의 방? 이제 우디는 그를 찾는 앤디의 목소리도, 어느 순간 다시 자신을 기억할 보니의 부름에도 흔들리거나 되돌아가지 않을, 자신의 내면의 목소리에 귀를 기울이는 존재이다. 그는 어디에 있어야 하는 존재가 아닌, 이제 어디든 다닐 수 있는 독립적인 존재로 다시 태어났다.

      는 '우디의 해방'을 위해 짜여진 영화다. 어떤 순간에는 자신의 무력함을, 또 어떤 순간은 주인의 행복을 위한 노력을, 다른 어떤 순간은 친구를 지켜내기 위한 우정을 그리고 자신이 어떤 존재인지 깨닫는 순간까지. 어쩌면 우디는 보니의 행복이 아닌, 자신만이 보니를 행복하게 해 줄 수 있을 거라는 착각과 타자들에게 자신이 의미있고 가치있는 존재임을 보여 주고 인정받을 수 있는 자신의 모습에 빠져있던 것이 아닐까. 이 영화가 시리즈라는 프렌차이즈 영화로의 관점보다는 아직 끝나지 않은 가장 중요한 무언가가 남아 있음을 증명하고, 그것이 여전히 우리의 친구인 '우디'를 응원하고 스크린에서 마주할 수 있는 기회로 느낄 수 있는 작품으로 탄생한 것이 아닐까 생각을 해본다.

      옒

      이번에 읽은 책은 ‘위대한 유산’이라는 소설이었다. 책 두께가 상당했지만, 그래도 한 번 읽어보기로 했다. 읽고 나니 이전에 읽었던 ‘젊은 예술가의 초상’보다는 이해하기가 수월했던 것 같다. ‘젊은 예술가의 초상’이 정말 유명한 작품이라는데 이해를 못하는 내 자신이 슬프긴 했지만, 그래도 ‘위대한 유산’이라는 작품이라도 잘 읽어서 다행이다 싶었다.
      위대한 유산은 주인공이 고아 소년인 핍이다. 고아인 핍은 자신의 누나와 대장장이 일을 하는 매형과 함께 살았다. 어느날 그는 탈출한 죄수 매그워치를 도와주고 죄책감을 갖는데, 매그워치는 탈옥한 다른 죄수와 싸움을 벌이다 결국 다시 체포되고 핍은 다시 일상의 삶을 살아간다. 그러다 이웃에 살고 있는 헤비샴이라는 여자와 그 양딸인 에스텔라를 만나는데, 이 과정에서 핍은 자기 신분이 천한 것과, 매형에 대한 창피함과 원망을 느끼게 되고, 상류층을 꿈꾸게 된다. 그러던 어느 날, 런던에서 재거스라는 신사가 와서 핍에게 엄청난 유산을 받게 되었다고 알리고, 핍은 런던 상류층의 예법과 신사 교육을 받게 된다. 핍은 런던 상류층의 삶이 적응해가고, 매형에 대해서 창피해하며 무시하게 된다. 그리고 그러던 중 어느 낯선 신사가 찾아왔는데, 그는 바로 어린 시절 자신이 도와준 죄수 매그워치이고, 돈을 많이 벌게 되어 핍을 후원하는 후원자 역할을 맡고 있었던 것이다. 핍은 그가 예전 죄수임을 알고 한동안 외면하며 그를 무시하지만, 그가 죄수가 된 이유가 천한 신분 때문에 컴피슨이라는 자에게 사기를 당해서 죄수가 되었음을 듣게 된다. 핍은 이 모든 상황 속에서, 자신이 꿈꿔왔던 상류층의 사회와, 신사의 존재가, 자신이 그렇게 무시해왔던 자신의 매형이나 죄수보다도 인간성이 떨어짐을 보며 현실을 직시하게 된다. 핍은 매그워치가 경찰들에게 쫓기고 있어 그의 탈출을 돕지만, 결국 발각되어 매그워치는 죽임을 당하게 된다. 결국 핍은 다시 원래 살던 곳으로 돌아와서 누나와 매형에게 속죄하고, 다시 함께 살아가는 한편, 질이 좋지 않은 신사 드러블과 함께 불행한 결혼생활을 하던 에스텔라가 사별하고 돌아와서 다시 만나게 된다.
      위대한 유산은 이런 내용의 이야기였다. 핍이 한 때 자신이 도워준 매그워치라는 죄수로부터 막대한 유산을 받는 것 때문에 제목이 위대한 유산이지만, 그것만은 아닌 것 같았다. 사실상 매그워치가 죽으며 핍은 유산을 상속받지 못하게 되었고, 다시 이전의 세상적인 시선으로는 보잘 것 없는 삶으로 돌아갔다. 하지만 그럼에도 책 제목은 위대한 유산이다. 어쩌면 위대한 유산은 단순히 물질적인 것이 아니라, 핍이 상류층 사회를 맛보며 깨달은 진짜 삶의 진리가 위대한 유산은 아닐까 하는 생각이 들었다. 핍은 계속해서 동경해왔던 상류층의 사회가 허울 좋은 것일 뿐임을, 그들의 실제 삶의 모습은 겉으로 보기에는 보잘 것 없어 보이지만 자신의 삶을 열심히 살아가는 매형과 죄수의 삶보다 못한 것임을 깨달았다. 돈과 명예보다도 훨씬 귀중하고 가치 있는 것을 깨달은 것이다.
      우리의 모습들도 생각해보게 된다. 세상의 수많은 사람들은, 그리고 어쩌면 나 자신도, 세상의 돈과 명예를 추구하며 살아간다. 세상은 그것이 좋은 것이라 말하고, 가치 있는 것이라 말한다. 하지만 정말 가치 있는 것은 그런 것이 아니다. 돈과 명예가 정말 가장 가치 있는 것이라면, 부자들은 모두 행복해야 한다. 높은 곳에 있는 사람은 모두 행복해야 한다. 하지만 세상을 돌아보면 전혀 그렇지 않은 모습을 보게 된다. 사람들은 행복하지 않은 그들의 모습을 이해하지 못하고, 그래도 자신들은 그 위치에 가면, 많은 부를 얻으면 행복할 것이라 착각한다. 하지만 책에서 본 것처럼, 직시해야 한다. 돈과 명예를 누리는 것만이 다가 아님을 똑똑히 기억해야 할 것이다. 어떤 자리에 있든, 그 살아가는 삶의 모습이 중요한 것임을 기억해야 할 것이다.


0 개 댓글

답장을 남겨주세요