2014-09-12 2 views
1

더 큰 시스템을위한 파이썬 모듈을 만들고 있습니다. 메인 모듈에 설치하기위한 setup.py 패키지를 만들었습니다. 그것은 제대로 작동하지만, 그때 내 모듈에 약간의 변경을했는데 주로 py 파일의 이름을 수정하고 많은 클래스를 재구성했습니다.setup.py가 이전 파일을 설치하는 이유는 무엇입니까?

그런 다음 모듈의 버전을 업데이트하고 pip로 이전 버전을 제거한 다음 python setup.py install을 사용하여 새 버전을 설치합니다. ipython에서 가져 오기를 시도하면 오래된 지워진 모듈을 발견했습니다.

상당히 이상하게 발견되어 내 virtualenv lib 폴더를 확인하고 모듈의 두 버전을 구 클래스 구조와 새로운 구조로 발견했습니다. 그리고 둘 다 ipython에서 가져 와서 테스트 해 보았습니다.

단순히 최신 버전을 사용할 수 있기 때문에 문제가 발생하지 않지만 혼란 스럽습니다. 왜이 행동을하는 걸까요?

답변

1

pip을 설치하지 않으면 pip을 사용하여 제거 할 수 없으므로 이전 버전을 실제로 제거한 적이 없습니다. python setup.py install은 다른 버전을 설치하지만 일반적으로 이전 버전 위에 설치됩니다 (.egg-info 파일 또는 디렉토리 제외). 예를 들어, setup.py (또는 pip)은 site-packages/my_module에서 my_module_v1으로 이름을 바꿀 수 없으므로 정확히 두 버전이 나란히 살고 있다고 말하지는 않습니다. 나는 당신이 디렉토리 구조를 바꿨고 .py이라는 파일명으로 두 개의 버전이 같은 상위 디렉토리에 공존 할 수 있다고 가정합니다. 따라서 IPython에서는 from my_module import OldClassNamefrom my_module import NewClassName을 실행할 수 있습니다.

+0

음, 흥미 롭습니다. 감사. – cllamach

관련 문제