2013-07-23 5 views
1

동적으로 뭔가를 추가하는 파이썬 프로그램이 sys.path입니다. 그것은 잘 작동하지만, 내 파이썬 프로그램을 .zip 파일로 배포하고 싶습니다. __main__.py이 실행됩니다..zip 파일 내부를 참조하는 Python sys.path 항목을 동적으로 추가합니다.

zip 파일에서 sys.path에 항목을 추가 할 수 있습니까? 약간 주위를 검색 한 후, 나는 pkgutil documentation을 찾았지만 무엇이 효과가 있을지 알 수 없습니다.

참고 : 나는 sys.path Windows 용 .pyd.dll 파일을 포함에 추가 할 필요가 물건.

+0

당신은 zip 파일을 실행할 수 없습니다 ... 나는 생각하는 질문을 이해하지 못합니다. –

+0

당신의 평판을 볼 때까지 당신이 무슨 말을하고 있는지 모른다고 생각했습니다. –

+0

zip 파일을 실행할 수 있습니다 : http://bugs.python.org/issue1739468 –

답변

2

내가 당신의 질문을 이해하지만 어쨌든 대답에 균열이있을 것이다 완전히 확실하지 않다 ... 불행하게도

, 당신은 sys.path에 추가하여 ZipFile를 가져올 수있는 반면 :

sys.path에는 모듈 및 패키지에 대한 검색 위치를 제공하는 문자열 목록이 포함되어 있습니다. PYTHONPATH 환경 변수와 다양한 기타 설치 및 구현 별 기본값으로 초기화됩니다. sys.path에서 항목은 같은 URL 또는 데이터베이스 쿼리와 같은 모듈을 검색하기 위해 파일 시스템의 디렉토리, zip 파일, 잠재적으로 다른 "위치"합니다 (site 모듈 참조), 이름을 지정할 수 있습니다. 문자열 및 바이트 만 이 (가) sys.path에 있어야합니다. 다른 모든 데이터 유형은 무시됩니다. 바이트 항목의 인코딩은 개별 path entry finders에 의해 결정됩니다.

소스 : http://docs.python.org/3/reference/import.html#path-entry-finders

... 그 .pyd.dll 파일까지 확장되지 않습니다

모든 파일은 ZIP 아카이브에 존재할 수 있지만 파일 .py.py[co]을 가져올 수 있습니다. 동적 모듈의 ZIP 가져 오기 (.pyd, .so)는 허용되지 않습니다.

소스 : http://docs.python.org/3/library/zipimport.html

나는이 제한 주위 작업의 방법을 잘 모르는 것 같아요.

+0

좋은 해결 방법이 있습니까? 예 : .pyd 및 .dll 파일의 압축을 풀어 sys.path에 추가하면이 작업을 수행 할 수있는 좋은 곳이 어디 있습니까? 기본 Python 설치를 수정하고 싶지 않고 .zip 파일을 100 번 실행하면 100 개의 임시 디렉토리를 생성하지 않아도됩니다. –

+1

@JasonS Windows 용으로 특별히 개발 된 적이 없으며 (Windows 사용자도 아닙니다.) [winpaths] (http://ginstrom.com/code/winpaths.html)이 도움이 될 수 있습니다. 아마도 "App Data"변형 중 하나를 원할 것입니다. 그건 그렇고, [here] (http://stackoverflow.com/q/626796/1014938)에서 찾을 수 있습니다. –

관련 문제