[완료] python 에서 실행화일의 path 찾는법.
글쓴이: litdream / 작성시간: 수, 2007/04/25 - 11:20오후
제가 만든 애플리케이션이 다음과 같은 구조로 되어있을때,
[AppRoot] /bin +- exe1.py, exe2.py, ... /lib /etc
가령, 어느 디렉토리에서든지 $ python [AppRoot]/bin/exe1.py 를 불러내더라도, exe1.py 의 위치를 찾아서, AppRoot 를 채워넣을 수 있는 방법이 있을까요? 그래서, lib 과 etc 를 항상 exception 없이 찾고싶습니다.
혹시 이방법말고도, hardcode 하지 않고도 위치를 찾는 좋은 방법있으면 부탁드립니다.
Forums:
아마도 찾으시는 것이?
dive into python 책 16.2 Finding path
http://www.diveintopython.org/functional_programming/finding_the_path.html
답글
답글 감사합니다.
물론, sys.argv[0] 로 넘겨졌을수도 있겠지만, 만약에 제 프로그램이 /usr/local/ 로 deploy 될 경우, 그리고, /usr/local/bin 이 PATH 에 걸려있을경우는, sys.argv[0] 가 그냥 executable 이 될수도 있겠죠.
물론, 이럴경우는 python 으로 사용한 lib 들이 /usr/local/lib 에 짬뽕이 되어서, 시스템상으로도 보기가 안좋아지기때문에, 무시할수도 있는 문제입니다. 더군다나, deploy 할수 있는 시스템은 모두 제가 제어할수 있기때문에, 항상 argv[0] 를 절대경로로 넘겨주도록 할수 있습니다만... :)
제가 질문을 좀 다르게 표현해보자면,
process image 로 카피된 코드의 원본의 위치를 파악할수 있는 방법이 Python 에 있는가 말이죠.
그냥, 단순히 생각해보면 안될것 같긴한데, 뛰어난 분들이 설계한 코드니깐, 있을것 같기도 하고해서요.. :)
어쨌든, 관심가져주셔서 감사합니다.
삽질의 대마왕...
삽질의 대마왕...
해결했습니다. bbs.pytho
해결했습니다.
bbs.python.or.kr 에서 도움을 받았습니다.
링크를 남깁니다.
http://bbs.python.or.kr/viewtopic.php?t=22792
삽질의 대마왕...
삽질의 대마왕...
제가 이해를 잘 못한 것인지
그런데 링크의 해결 방법
과 제가 예를 들은
결과가 같습니다.
굳이 복잡한 방법을 쓰지 않아도 될 것 같습니다.
참고로 sys.argv[0]는 실행가능한 script.py를 직접 실행하나 python script.py로 실행하나 결과는 같습니다.
그런데 아무래도 뭔가 아직도 질문을 잘못 이해했을지 모른다는 생각이 얼핏 -_-;
정말 그렇군요.
정말 그렇군요.
argv[0], 혹은 sys.module['__main__'].__file__ 등이 frame 에서 받아온값과 같네요.
결국, os.path.abspath() 를 한번 더 붙여줘서 해결했습니다.
저도 급한마음에 테스트를 덜하고는, 잠깐 착각했었습니다.
지적 감사합니다.
삽질의 대마왕...
댓글 달기