2017-05-07 4 views
2

저는 자바 배경에서 왔고 파이썬에서는 완전히 새로운 것 같습니다.피클 파일로 파이썬 프로젝트를 구성하는 방법은 무엇입니까?

이제 Git에 저장된 파이썬 스크립트와 pickle 파일을 몇 가지 파이썬 프로젝트로 구성했습니다. 피클 파일은 sklearn 모델로 일련 화됩니다.

이 프로젝트를 구성하는 방법을 궁금합니다. Git에 pickle 파일을 저장하면 안된다. 어딘가에 이진 의존성으로 저장해야합니다.

의미가 있습니까? 파이썬 프로젝트의 바이너리 의존성을 저장하는 일반적인 방법은 무엇입니까

+0

[보안 및 유지 관리상의 제한] (http://scikit-learn.org/stable/modules/model_persistence.html#security-maintainability-limitations)에 대한 내용은 피클 사용에 지친 것입니다. –

답변

3

힘내, 이진 데이터로 충분합니다. 예를 들어 많은 프로젝트가 예를 들어 git repos의 이미지.

아마, 이진 파일이 소스 자료, 외부 종속성 또는 중간 빌드 단계 일 때마다 결정하는 것이 좋습니다. 물론 엄격한 규칙이 없으므로 자신에 대한 느낌을 결정하십시오. 여기 내 제안은 다음과 같습니다

가 (재현성) 뭔가에서 발생하는 경우
  1. , .gitignore 바이너리 및 필요한 데이터를 구축 스크립트가 있습니다. 그것은 동일하거나 독립적 인 repo에있을 수 있습니다 - 그것이 가장 기분이 좋은지에 따라.

  2. 일부 외부 소스에서 가져온 경우 동일한 로직이 적용됩니다 (예 : 외부 다운로드. 일반적으로 리포지토리에 의존성을 저장하지 않습니다. 우리는 리포지토리에 대한 참조 만 유지합니다. 예 : 우리는 virtualenvs를 지키지 않고 requirements.txt 파일만을 가지고 있습니다 - 자바 세계의 유추는 .jars가 없지만 pom.xml이나 build.gradle의 종속성 섹션 만있는 것과 같은 (대략적인 근사치) 것입니다.

  3. 이들이 소스 재료로 간주 될 수있는 경우. 파이썬을 에디터로 조작한다면 파일의 바이너리 특성에 대해 걱정하지 말고 저장소에 저장하십시오.

  4. 실제로 소스 자료가 아니지만 생성 프로세스가 매우 복잡하거나 시간이 오래 걸리고 파일이 정기적으로 업데이트 될 예정이 아닌 경우 끔찍할 것입니다. 레포에서 그들을 가지고 잘못되었습니다. 파일이 어떻게 생성되었는지에 대한 메모 (README.txt 또는 기타)를 남기는 것이 좋습니다.

아, 파일 크기가 클 경우 (수백 메가 바이트 이상) git-lfs를 살펴보십시오.

+0

고맙습니다. 귀하의 회신은 제게 많은 의미가 있습니다. 이 피클 바이너리는 수동 프로세스의 일부로 내부적으로 생성됩니다. 파일 크기는 ~ 5 - 10M입니다. 그들은 몇 달 안에 한 번 업데이트됩니다. 우리가 자식들을 사귈 수있는 것 같아. – Michael

+1

@ 마이클 : 두 번째 Git 저장소 나 일종의 비 자식 시스템 (LFS와 같은 하이브리드가 아닌)에서 바이너리를 유지하는 것도 고려해 볼 수 있습니다. Drdaeman이 말했듯이, 엄격한 규칙은 없습니다. 단지 처음에는 물론 프로젝트의 미래에도 잘 작동하는 것을 원합니다. 3 개월마다 10MB는 연간 약 40MB이지만 충분히 합리적인 편이지만 시간이 지남에 따라 성장하는 경향이 있습니까? 그것은 결정을 어떤 방향으로나 밀어 줄 수 있습니다. – torek

관련 문제