2014-09-30 5 views
1

나는 12 개 정도의 레거시 Django 응용 프로그램을 유지 관리했습니다. 이 과정의 첫 번째 부분은 고대 우분투 9.04 서버 (지원되지 않는 길이가)를 신선하고 안전한 것으로 옮겨 놓는 것입니다.Python/Django 프로젝트에 대한 모든 unmet 의존성 찾기

그러나 프로젝트에는 어떤 종류의 의존성 목록도 포함되어 있지 않습니다. 습관적으로 나는 사이트를 개발할 때 requirements.txt 파일을 생성하는 데 익숙해졌으며 재배포를 간단하고 자동화 된 프로세스로 만듭니다.

필자는 이러한 프로젝트를 수동으로 수행해야하며 모든 구석 구석을 찾아 누락 된 종속성을 찾아야합니다. 어느 쪽이든 아니면 모든 것을에 설치하십시오.

여기에 자동 코드 분석 옵션이 있습니까? 각 프로젝트의 로컬 프로젝트 디렉토리를 스캔하여 필요한 패키지 목록을 생성하는 데 사용할 수있는 것이 이상적입니다. PyPI 형식의 패키지 이름이 이상적입니다.

+0

'import x'와'from x import y' 문을 검색 할 수있는 스크립트를 작성한 다음 대상 환경의 모든 명령문을 실행하여 어떤 작업이 어떤 작업을 수행하는지 확인할 수 있습니다. –

답변

1

z3c.dependencychecker이 목적으로 사용할 수 있습니다.

이것은 z3c 네임 스페이스에 있습니다.하지만 Zope 생태계를 염두에두고 개발 되었기 때문에 그럴 것입니다.하지만 이것은 일반 Python 프로젝트에도 사용될 수 있습니다. 테스트를 실행하고 싶지 않다면 Zope 패키지에 대한 의존성이 없다.

그러나 setup.py에 선언 된 종속성 만 고려하고 requirements.txt은 고려하지 않습니다. 하지만 일단 결정되면 종속성의 전체 목록에 대해 누락 된 종속성을 동기화하는 것이 매우 쉬워야합니다.

사용법 :

  • 는, 예를 들어, 당신의 VIRTUALENV를 활성화하고, z3c.dependencychecker 설치 수행하여 pip install z3c.dependencychecker
  • 프로젝트에 최근에 을 실행했는지 확인하십시오. 따라서 최신 *.egg-info이 있어야합니다.
  • 프로젝트의 소스 디렉토리
  • 실행 z3c.dependencychecker가 (때문에 작동 방식, 정의에 의해 거의) 완벽한 아니라고 dependencychecker

참고로 cd, 그래서 몇 가지 잘못된 반응을보고 할 수 있습니다. 하지만 내 경험에 비추어 볼 때 매우 좋은 출발점이며 특정 종속성을보고 한 이유를 확인하고 오탐 (false positive)을 제거하는 것이 매우 쉬워야합니다.