2017-09-23 1 views
0

urllib.request과 같은 파이썬 모듈을 사용하고자하지만 모든 파이썬 설치없이 컴퓨터에서 사용할 수있는 파일에 모든 모듈의 종속성을 갖고 싶습니다.파이썬 모듈을 복사하는 방법 및 파일에 의존성을 적용하는 방법

특정 모듈을 파일로 복사하는 데 사용할 수있는 모듈 또는 도구가 있으며 전체 스크립트를 거쳐 수동으로 복사하지 않고도 종속성이 있습니다. 파이썬 3을 사용하고 있습니다.

답변

1

이런 종류의 작업을 수행하는 데 사용할 수있는 다양한 옵션이 있습니다. 머리 꼭대기에서 먼저 떠오르는 것은 파이썬의 내장 된 지퍼 지원입니다. zip 파일에 __main__.py이 있으면 zip 파일에서 python을 실행하면 스크립트로 실행됩니다. 단순한 (pure-python, 비 OS 의존적 인) 패키지는 그러한 zip 파일에 간단하게 임베드 할 수 있어야합니다.

또는 cx_Freeze과 같은 도구는 OS 고유의 방식으로 인터프리터를 포함하여 종속성이있는 스크립트를 패키지화 할 수 있습니다. 결과 번들은 인터프리터를 포함하지만 고유 구성 요소와의보다 복잡한 종속성을 포함 할 수 있으므로 결과적으로 더 큰 점유 공간이 생깁니다. 파이썬의 zip import 기능으로 이것이 가능하지는 않습니다.

+0

첫 번째 부분에 익숙하지 않습니다. 내가 지퍼에 넣으면 정상적인 모듈처럼 작동할까요? '__main __. py'는 일반 모듈에 들어 있어야합니다. 이 문서를 어디에서 찾을 수 있는지 알고 있습니까? 이 해결책 (+1)을 가져 주셔서 감사합니다. – Simon

+0

저는 실제로이 문서가 어디서 생겼는지 미처 알지 못합니다. – Anonymouse

+1

실험으로 나는 virtualenv를 만들었고 요청을 설치하고'venv/lib/python3.5/site-packages'에있는 모든 것을 zip 파일의 루트에 복사했다. 간단한'__main __. py' (' 요청을 가져오고, print (requests.get ("http://ix.io/M3M") .text)')를 호출하고 요청을 사용할 수없는 파이썬에서 실행 해 보았습니다. 그것은 작동했습니다 :) 저는 실제로 그 기능에 대해 많이 알지 못합니다. 그러나 그것은 마술처럼 작동하는 것 같습니다. – Anonymouse

1

컨테이너 테크놀로지를 사용하십시오. 예를 들어, Docker를 사용하면 코드를 머신에 새로운 것을 설치하지 않고도 원하는 머신에 의존성을 적용하여 포팅 할 수 있으며 많은 시간을 절약 할 수 있습니다.

+1

답변 주셔서 감사합니다. 그러나이 경우 다른 답변이 더 유용하다고 판단했습니다. – Simon

관련 문제