[python] 모듈 디펜던시 찾기, sfood Develop Tip

Python 개발에서 setup 설치를 할 때,
모든 것을 설치하지 않고 필요한 모듈만 설치해야할 필요가 생겼습니다.

예를 들어,

top/util
top/first
top/second
의 모듈 등이 있고,

top/second 에서는 top/util 만 참조하고 top/first 모듈은 참조하지 않을 때
top/first를 제외하고 설치하면 편합니다.

그러려면 우선 top/second 하위의 모듈들이 참조하는 모듈을 찾을 필요가 있습니다.

이런 경우, 필요한 것이 snakefood 라는 것이 있습니다.

$ sudo apt-get install snakefood

라고 우분투에서 설치 가능하구요,

다음과 같이 명령을 주면,

$ sfood top/second
(('/home/toor/work', 'top/second/policymgr'), (None, None))
...

와 같은 식으로 모듈이 나옵니다.
헌데 이렇게 보면 적응하기 어렵습니다.

$ sfood top/second | sfoood-flatten
/home/toor/work/top/second/mgr.py
/home/toor/work/top/second
...
와 같이 보기쉽게 참조 목록이 나옵니다.

그 밖에 다른 역할도 수행할 수 있습니다.

$ sfood top/second | sfoood-checker
/home/toor/work/top/second/mgr.py:4:25: Unused import 'os'
...
와 같이 실제로 사용하지 않는데 import 하는 것을 찾을 수 있습니다.
(C의 전처리기와 같이 단순 참조만이 아니라 실제 모듈을 불러오므로 
 사용하지 않는 모듈 import는 코맨트로 막아 놓는게 좋습니다.)

심지어 참조 목록을 그래프로 그릴 수도 있습니다.

$ sfood top/second | sfoood-graph > foo.dot
$ dot -Tpng -o foo.png foo.dot

그런데 만약 위의 그림 결과가 너무 작다면,
foo.dot 파일의 size를 조종합니다.


어느분께는 도움이 되셨기를...

덧글

댓글 입력 영역

구글애드텍스트