내 응용 프로그램에서 다음을 사용하고 싶습니다.
packageA
, 필요한packageX==1.3
packageB
, 필요한packageX==1.4
packageX==1.5
packageX
이 상황을 처리하기 위해 pip로 여러 버전을 설치하려면 어떻게해야 합니까?
내 응용 프로그램에서 다음을 사용하고 싶습니다.
packageA
, 필요한 packageX==1.3
packageB
, 필요한 packageX==1.4
packageX==1.5
packageX
이 상황을 처리하기 위해 pip로 여러 버전을 설치하려면 어떻게해야 합니까?
packageX>=1.3,<2
하고 packageX>=1.4,<2
(다음 업스트림 packageX 가정 시맨틱 버전을 다음 다운 스트림 응용 프로그램 개발자가 핀과 사용에 아무 문제가없는 것처럼) packageX==1.5
행복 할 것 모두를. 자세한 내용은 여기에서
답변:
pip는 이것을 도와주지 않을 것입니다.
특정 버전을 설치하도록 지시 할 수 있지만 다른 버전을 재정의합니다. 반면에 두 개의 virtualenv를 사용하면 동일한 머신에 두 버전을 모두 설치할 수 있지만 동시에 사용할 수는 없습니다.
가장 좋은 방법은 두 버전을 다른 이름으로 Python 경로에 넣어 수동으로 설치하는 것입니다.
그러나 두 라이브러리가 같은 이름을 가질 것으로 예상하는 경우 (그리고 그래야만하는 경우) 다음과 같은 가져 오기 별칭으로 필요한 버전을 선택하도록 수정해야합니다.
import dependencyname_version as dependencyname
현재이를위한 깨끗한 방법은 없습니다. 당신이 바랄 수있는 최선은이 해킹이 작동하는 것입니다.
차라리 두 라이브러리 중 하나를 버리고 동등한 것으로 교체하거나 패치를 패치하여 종속성의 새 버전을 수락하고 패치를 커뮤니티에 다시 제공하고 싶습니다.
EA에 대한 소스를 다운로드하십시오. 꾸러미. 각각 별도의 폴더에 설치하십시오. 예를 들면. 버전 1.10 패키지가 있었지만 일부 작업을 위해 개발 버전으로 전환하고 싶었습니다. dev 모듈의 소스를 다운로드했습니다.
git clone https://github.com/networkx/networkx.git
cd netwokrx
이 버전에 대한 폴더를 만든
mkdir /home/username/opt/python
다음 PYTHONPATH env var를 다음으로 설정했습니다 export PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/
. 다음으로 다음을 사용하여 설치했습니다.python setup.py install --prefix=/home/username/opt/python
이제 내 PYTHONPATH가 다른 사이트 패키지 폴더를 가리키고 있기 때문에 명령 줄에서 python을 실행하고 새 모듈을 가져올 때 작동합니다. 다시 전환하려면 PYTHONPATH에서 새 폴더를 제거하십시오.
>>> import networkx as nx
>>> nx.__version__
'2.0.dev_20151209221101'
networkx
버전 차이 와 싸우고 있기 때문에 특별히 여기에 왔습니다 !
sys.path