2017-05-17 1 views
0

두 개의 Python 환경이 설치되어 있습니다. 내 기본 환경 인 EnvA와 EnvA에서 사용되는 일부 패키지의 이전 버전이있는 EnvB. EnvA 인터프리터로 실행되는 프로그램에서 EnvB를 기반으로 일부 코드를 시작할 수 있습니까?Python : 다른 환경의 패키지 사용

실제 예 : 필자는 * .ui 파일을 변환하는 데 사용하는 pyqt5 GUI가 있는데, 기본적으로 pyuic5 쉘 명령을 호출합니다. PyQt4 라이브러리가이 환경에서 PyQt5으로 대체되었으므로 .ui를 pyqt4 코드로 변환하는 옵션을 추가하고 싶습니다. 이는 가능하지 않습니다. 메인 프로그램이 다른 파이썬 환경에서 서브 프로세스/인터프리터 /에서 스크립트를 실행하고 스크립트가 작업을 마친 후 돌아올 수 있습니까?

+0

가 왜 그냥 당신이 원하는 방식으로 구성되어 세 번째 환경을 만들 수 있습니까? 또한 Anaconda, virtualenv 또는 다른 것을 사용하고 있습니까? –

+0

내가 사용하려고하는 특정 패키지는 이미 내 프로그램에서 사용하고있는 패키지의 사용되지 않는 버전이므로 사용하지 않는 것이 좋습니다. 나는이 질문에서 내가하려고하는 것에 대한 세부 사항을 추가했다. 또한 아나콘다를 사용하고 있습니다. – MisterTea

+0

PyQt4가 더 이상 사용되지 않는다고 들었습니까? –

답변

1

정말 권장하지 않지만 아마도 sys.path을 수정하여이 작업을 수행 할 수 있습니다. sys.path 이전에 EnvB 패키지의 경로를 추가하면 EnvA 버전에 도달하기 전에 파이썬이 가져옵니다.

importlib을 사용하여 정규화 된 경로에서 특별히 가져올 수도 있습니다. 이 다른 answer는 좋은 사례를 가지고 있지만, 기본적으로는 다음과 같이 보입니다 :

spec = importlib.util.spec_from_file_location("module", "path/to/file.py") 
module = importlib.util.module_from_spec(spec)