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

파이썬 모듈을 원격으로 임포트하는 방법: knockout부터 virtualenv까지

원격으로 파이썬 모듈을 임포트하는 방법

파이썬에서는 모듈을 원격지에서 직접 가져와(import) 사용하는 방법이 존재합니다. 다만 이 방식은 애플리케이션의 실행 속도를 느리게 만들 수 있어 일반적으로는 권장되지 않습니다. 원격 모듈 임포트를 구현하려면 knockout이라는 모듈을 활용할 수 있습니다.

knockout 설치하기

먼저 pip를 사용해 knockout을 설치합니다.

$ pip install knockout

원격 모듈 임포트 사용법

설치가 완료되면 아래와 같이 knockout을 사용해 원격 모듈 임포트 기능을 활성화할 수 있습니다.

>>> from knockout import urlimport
>>> urlimport.register()
Url importing enabled. Add urls to sys.path.

임포트에 사용할 수 있는 유효한 URL 형식은 다음과 같습니다.

https://example.com/path/to/repository/#packagename

주의사항

이 기능은 실험적(experimental) 성격이 강하므로, 사용 과정에서 발생하는 모든 위험은 개발자 본인이 감수해야 합니다.

실제 사용 예시

다음은 BeautifulSoup 라이브러리를 원격 URL에서 직접 임포트하는 예시입니다.

>>> import sys
>>> sys.path.insert(0, 'https://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.0.8/#BeautifulSoup')
>>> import BeautifulSoup
...
>>> BeautifulSoup
<module 'BeautifulSoup' from 'https://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.0.8/BeautifulSoup.py'>

대안 1: sys.path를 활용한 로컬 디렉터리 추가

서버에 충분한 권한이 없어 패키지를 설치할 수 없는 경우라면 몇 가지 대안이 있습니다. 첫 번째 방법은 모듈 파일들을 별도의 디렉터리에 저장한 뒤, 해당 경로를 sys.path에 추가해 파이썬이 그 폴더에서도 모듈을 검색하도록 만드는 것입니다.

>>> import os, sys
>>> file_path = 'AdditionalModules/'
>>> sys.path.append(os.path.dirname(file_path))
>>> # PYTHONPATH에 경로가 등록되었으므로, 이제 파이썬은 AdditionalModules 폴더에서도 모듈을 찾습니다.

대안 2: virtualenv로 격리된 환경 구축

두 번째 방법은 virtualenv를 사용해 격리된 로컬 파이썬 환경을 만드는 것입니다. virtualenv가 해결하고자 하는 근본적인 문제는 의존성(dependency)과 버전 관리이며, 간접적으로는 권한 문제이기도 합니다.

예를 들어 한 애플리케이션은 LibFoo 버전 1이 필요하고, 또 다른 애플리케이션은 버전 2가 필요하다고 가정해 보겠습니다. 이런 경우 두 애플리케이션을 어떻게 함께 사용할 수 있을까요? 모든 패키지를 /usr/lib/python2.7/site-packages(또는 운영체제별 표준 설치 위치)에 설치하면, 업그레이드하면 안 되는 애플리케이션을 의도치 않게 함께 업그레이드해버리는 상황이 쉽게 발생합니다.

이러한 특성 덕분에 virtualenv는 설치 권한이 없어 서버에 패키지를 직접 설치할 수 없는 상황에서도 매우 유용하게 활용됩니다. 더 자세한 내용은 공식 문서를 참고하세요.
virtualenv 공식 문서 바로가기