Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

설치 없이 Python 모듈을 가져오는 방법: sys.path 설정과 virtualenv 활용

개요

네, Python 모듈을 설치하지 않고도 가져올(import) 수 있는 방법이 있습니다. 관리자 권한이 없어서 모듈을 설치할 수 없는 환경이라면 sys.path에 경로를 추가하는 방법 또는 virtualenv를 이용한 가상 환경 구성 두 가지 방식을 사용할 수 있습니다.

방법 1: sys.path에 모듈 경로 추가하기

모듈 파일을 별도의 디렉터리에 저장한 뒤, 해당 디렉터리를 Python의 검색 경로(PYTHONPATH)에 추가하면 됩니다. 아래 코드처럼 sys.path.append()를 사용하면 Python이 지정된 폴더에서도 모듈을 찾게 됩니다.

>>> import os, sys
>>> file_path = 'AdditionalModules/'
>>> sys.path.append(os.path.dirname(file_path))
>>> # PYTHONPATH에 추가되었으므로,
>>> # 이제 Python은 AdditionalModules 폴더에서도 모듈을 검색합니다.

이 방법은 간단하지만, 스크립트가 실행될 때마다 경로를 지정해 주어야 한다는 점을 기억해야 합니다. 영구적으로 적용하고 싶다면 환경 변수 PYTHONPATH에 해당 디렉터리를 등록하는 것도 좋은 대안입니다.

방법 2: virtualenv로 격리된 가상 환경 만들기

virtualenv는 시스템 전역 환경과 분리된 독립적인 로컬 Python 환경을 생성해 주는 도구입니다. 이 도구가 해결하는 근본적인 문제는 바로 의존성(dependency)과 버전 충돌, 그리고 간접적으로는 권한 문제입니다.

예를 들어 어떤 애플리케이션은 LibFoo 버전 1이 필요하지만, 다른 애플리케이션은 버전 2를 요구한다고 가정해 봅시다. 두 애플리케이션을 동시에 사용하려면 어떻게 해야 할까요? 모든 패키지를 /usr/lib/python2.7/site-packages(또는 각 플랫폼의 표준 위치)에 설치하면, 의도치 않게 업그레이드하면 안 되는 애플리케이션까지 함께 업그레이드되는 상황이 발생하기 쉽습니다.

virtualenv를 사용하면 프로젝트별로 독립적인 패키지 공간이 생기기 때문에 이런 충돌을 피할 수 있습니다. 특히 설치 권한이 없는 머신에서는 virtualenv를 사용자 디렉터리에 생성함으로써 시스템 폴더에 접근하지 않고도 필요한 패키지를 자유롭게 사용할 수 있습니다.

virtualenv에 대한 자세한 내용은 공식 문서(https://virtualenv.pypa.io/en/stable/)를 참고하세요.

정리

권한 부족 등의 이유로 모듈을 설치할 수 없는 상황이라면, ① sys.path.append()로 모듈이 있는 디렉터리를 검색 경로에 추가하거나, ② virtualenv로 권한 없이 사용 가능한 격리된 가상 환경을 구성하는 방법으로 문제를 해결할 수 있습니다. 일회성 작업에는 첫 번째 방법이, 여러 프로젝트와 의존성을 관리해야 하는 경우에는 virtualenv가 더 적합합니다.