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

파이썬에서 같은 이름의 모듈 두 개를 설치하는 방법은 있을까요?

pip으로 같은 이름의 모듈 설치는 불가능합니다

결론부터 말하자면, pip을 사용해서는 같은 이름의 파이썬 모듈 두 개를 동시에 설치할 수 없습니다. PyPI(PyPI 저장소)에 등록된 모든 패키지는 반드시 고유한 이름을 가져야 하기 때문입니다.

그 이유는 패키지 생태계의 구조에 있습니다. 대부분의 패키지는 서로를 의존성(requirement)으로 참조하며, 이때 패키지 이름이 절대 변경되지 않는다는 전제를 깔고 있습니다. 만약 특정 패키지의 이름이 바뀌거나 중복된다면, 의존성 해석 과정 전체가 무너질 수 있습니다.

sys.path 검색 순서 때문에 발생하는 충돌

설령 어떤 방법으로든 두 모듈의 코드를 Python 경로(sys.path)에 넣는 데 성공했다고 해도 문제는 남습니다. 파이썬은 모듈을 임포트할 때 sys.path에 나열된 경로를 순서대로 탐색하고, 가장 먼저 일치하는 모듈을 발견하는 즉시 검색을 멈춥니다. 따라서 나중에 위치한 모듈은 사실상 접근할 수 없게 됩니다.

현실적인 해결 방법

가장 확실한 방법은 다음과 같습니다:

  • 필요한 라이브러리의 전체 소스 코드를 여러분의 코드베이스(프로젝트 폴더)로 복사합니다.
  • 두 모듈 중 하나의 모듈 이름을 변경합니다.
  • 변경된 이름으로 각각 임포트하여 사용합니다.

이렇게 하면 이름 충돌 없이 두 버전의 기능을 모두 활용할 수 있습니다.

다른 패키지에서 같은 이름의 모듈을 임포트하는 경우

반면, 설치 자체는 정상적으로 되어 있고 단순히 서로 다른 패키지에 속한 같은 이름의 모듈(또는 함수)을 임포트해야 하는 상황이라면, as 키워드로 별칭(alias)을 붙여 쉽게 해결할 수 있습니다:

>>> from foo import bar as first_bar
>>> from baz import bar as second_bar

위 예제처럼 foo 패키지의 barfirst_bar로, baz 패키지의 barsecond_bar로 가져오면 두 객체를 충돌 없이 동시에 사용할 수 있습니다.

정리

  • pip으로 동일한 이름의 패키지 두 개를 설치하는 것은 불가능합니다.
  • PyPI는 패키지 이름의 고유성을 보장하기 때문입니다.
  • 꼭 필요하다면 소스 코드를 직접 복사해 모듈 이름을 변경하는 것이 최선입니다.
  • 단순 임포트 충돌이라면 import ... as ... 별칭 문법으로 해결하세요.