파이썬 조직 공학 디렉토리

파이썬 조직 공학 디렉토리

파이썬 조직 공학 디렉토리

좋은 파이썬 프로젝트 디렉토리 구조를 구성하는 방법에 대한 몇 가지 합의가 디렉토리 구조되었습니다 이미 있습니다. 의 유래에서 이 문제 에 대한, 우리는 파이썬 디렉토리 구조에 대한 설명을 볼 수 있습니다.

즉 말했다, 아주 좋은되고있다, 나는 바퀴가 서로 다른 다양한 방법을 인용 다시 작성하지 않으려는, 거기 나는 나의 이해와 경험을했다.

프로젝트를 가정하면 foo는 이름,이 같은 가장 편리한 디렉토리 구조가 충분 비교하는 것이 좋습니다 :

Foo/
|-- bin/
|   |-- foo
|
|-- foo/
|   |-- tests/
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |
|   |-- __init__.py
|   |-- main.py
|
|-- docs/
|   |-- conf.py
|   |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README

간단히 설명합니다 :

  1. bin/: 물론라는 이름의 실행 파일에 저장된 일부 항목은, 당신은 할 수 있습니다 script/또한 같은 라인.
  2. foo/모든 프로젝트의 소스 코드를 저장합니다. (1) 모든 소스 코드 모듈, 패키지는이 디렉토리에 배치해야합니다. 최상위 디렉토리를 넣지 마십시오. (2) 그 서브 tests/저장 부 테스트 코드는, 입구 (3) 프로그램 바람직라는 main.py.
  3. docs/: 일부 문서를 저장합니다.
  4. setup.py: 설치, 배포가, 스크립트 패키지.
  5. requirements.txt: 외부 소프트웨어 종속성의 파이썬 패키지 저장소 목록을 표시합니다.
  6. README: 프로젝트 문서.

또한, 프로그램의 수는 점점 더 많은 콘텐츠를 제공하는있다. 예를 들어 LICENSE.txt, ChangeLog.txt이러한 일들이 필요 사용하는 주로 오픈 소스 프로젝트이기 때문에 등 파일, 나는 여기에 나열하지 않았습니다. 당신이 오픈 소스 소프트웨어를 작성하려면, 디렉토리를 구성하는 방법, 당신은 참조 할 수 있습니다 이 문서 .

여기에서, 단순히 내이 디렉토리의 이해와 개인의 요구에 대해 이야기한다.

 

README 소개

나는이 각 프로젝트 파일을 가져야한다고 생각, 목적은 독자들이 신속하게 프로젝트를 이해 할 수 있도록 프로젝트 설명의 정보를 브리핑 할 수있을 것입니다.

그것은 다음과 같은 문제에 주목해야한다 :

  1. 소프트웨어 현지화, 소프트웨어의 기본 기능.
  2. 코드 실행 방법 : 설치 환경은 명령을 시작합니다.
  3. 사용에 대한 간략한 설명입니다.
  4. 코드 디렉토리 구조는 더 자세한 설명은 소프트웨어의 기본 원칙을 가리킬 수 있습니다.
  5. 자주 묻는 질문 (FAQ).

나는 좋은 몇 가지 추가보다 있다고 생각합니다 README. 소프트웨어 개발의 초기에, 때문에 개발 과정은 초기에 보완 될 것입니다 분명 이상 변경 될 수 있습니다, 반드시 모든 정보에 없습니다. 그러나 프로젝트의 끝에서, 같은 문서를 작성할 필요가있다.

 

요구 사항에 대한

파이썬 프로젝트는 종속성 및 정확한 버전 번호를 저장하는 데 사용되는 requirements.txt 파일을 포함해야합니다. 새로운 환경을 구축하기 위해.

공식 문서 :

핍의 문서 상태

핍 설명

요구 사항 형식으로 출력 설치 패키지를 동결.

목록 목록 패키지를 설치했습니다.

(이이 문서를 업데이트하는 것이 가장 좋습니다 그렇지 않으면 설치 후, 로컬 데이터 패키지를 많이 생성하거나 패키지를 업그레이드합니다) 가상 환경에서 핍 세대를 사용 :

주사위 동결> 지역 환경 패키지 requirements.txt # 출력 파일

 

가상 환경의 전체 복사본을 생성해야하는 경우, 당신은 새로운 가상 환경을 만들고 그에서 다음 명령을 실행할 수 있습니다 :

대한 -r requirements.txt 번호를 패키지 설치 파일을 설치 PIP

 

Requirements.txt 수요 파일 내용의 예 :

증류기의 == 0.8.6

표백제 == 1.4.3

== 6.6을 클릭

지배 == 2.2.1

 

setup.py 소개

일반적으로 사용하는 setup.py코드, 설치 및 배포 문제를 관리하기 위해 포장. 업계 표준은 파이썬 인기 포장 도구로 작성 setuptools에 이 일을 관리 할 수 있습니다. 이 모드는 일반적으로 오픈 소스 프로젝트를 사용한다. 그러나 여기 이러한 문제를 해결하기 위해 표준화 된 도구를 사용하지 않을의 핵심 아이디어는하지만 프로젝트가, 설치하는 배포 도구가 있어야합니다 빠르고 쉽게, 코드가 배포되고 실행됩니다 환경에 새 컴퓨터에 설치 될 수 있다고 말했다 최대.

나는이 구덩이 밟았다.

내가 처음 파이썬 쓰기 프로젝트, 설치 환경, 코드를 배포하는 전체 프로세스가 수동으로 수행되는 프로그램을 실행과 접촉 왔을 때, 나는 다음과 같은 문제가 발생했습니다 :

  1. 설치 환경은 종종 잊지 때 최근에 새로운 파이썬 패키지 라인에 대한 실행 결과, 잘못된 프로그램을 추가합니다.
  2. 파이썬 패키지 의존성 문제의 버전, 때때로 우리는 프로그램에서 사용 파이썬 패키지의 버전이지만, 공식 수동으로 잘못 될 수있다 설치하여 설치 최신 패키지를 가지고있다.
  3. 당신은 많은 패키지에 의존하는 경우, 하나 하나가,이 것은 매우 시간이 많이 걸리는 설치를 따라 달라집니다.
  4. 신입생은 종종 다양한 종속성을 설치하는 방법을 잊을 수 있기 때문에, 프로그램이 될 것까지 매우 귀찮은 실행 프로젝트를 쓰기 시작했다.

setup.py이러한 것들은 함께 자동화 할 수 있습니다, 효율성을 개선하고 오류의 가능성을 줄일 수 있습니다. "일을 자동화 할 수있는 자동화 된 복잡한 일들이. 자동화해야한다"매우 좋은 습관입니다.

setuptools에 문서 의 경우 새로운 상대적으로 큰을, 당신은 좋은 진입 점을 찾을 수 없습니다. 기술 방법을 배우는 것은 다른 사람, 당신은 플라스크가 작성된 어떻게 파이썬 웹 프레임 워크를 참조 할 수 있습니다 사용하는 방식을 볼 수 있습니다 :  setup.py

물론, 간단한 포인트는 자신의 설치 스크립트 (쓰기 deploy.sh) 대안 setup.py도 나쁜 생각이 아니다.

 

conf.py 소개

위의 디렉토리 구조에, 거기에 더 의지 없음을 참고 conf.py소스 디렉토리에 있지만,에 docs/디렉토리.

구성 파일은 많은 프로젝트는 방법을 사용합니다 :

  1. 프로파일 파이썬 이러한 여기 conf.py. 하나 개 이상의 파일을 작성
  2. 관통 직접 구성 파일을 사용하는 모듈 프로젝트 import conf코드 형식이 구성의 사용.

나는이 방법에 동의하지 않는다 :

  1. 이것은 단위 테스트가 곤란하게 (인해 내부 모듈은 외부 구성 종속성)
  2. 제어 프로그램의 사용자 인터페이스와 같은 반면 프로필, 파일 경로는 사용자가 임의로 지정한다.
  3. 이러한 모듈은 대부분 의존하도록 모든 코드 모듈을 하드 코딩을 통해 나쁜 재사용 프로그램 구성 요소, conf.py이 파일.

그래서, 구성 및 더 나은 방법을 사용하여 생각,

  1. 구성 모듈은 외부 프로파일에 의해 영향을받지 않는 유연한 구성된다.
  2. 구성 프로그램은 또한 유연하게 제어된다.

아이디어는 증거로 할 수있다, 이러한 프로그램을 자유롭게 지정된 사용자 구성 할 수 있습니다 MySQL은,,의 nginx를 사용 nginx를 mysql을 학생들이 알고있다.

따라서, 코드는 직접적으로 안 import conf프로파일을 사용 하였다. 디렉토리 구조 위의 conf.py샘플 구성은, 주어진 직접 프로그램에서 참조 구성 파일을 하드 코딩하지. 당신이 줄 수있는 main.py프로그램이 지정된 구성 경로 구성 시작 매개 변수 방법의 내용을 읽을 수 있도록. 물론 여기서 conf.py당신은 예를 들어, 비슷한 이름을 변경할 수 있습니다 settings.py. 또는 당신은 이러한 구성 파일을 작성하는 다른 형식의 콘텐츠를 사용할 수있는 settings.yaml등.

 

main.py 소개

__name__ == '__main__'파이썬은입니다 main函数입구. 하지가 사용하는 문구를 추가하는 말을 python xxx.py현재 직접 직접 파이썬을 실행이라고 여부를 판단 할 수있는 곳을 수행 할 수 있지만.

getopt읽기위한 포장 방법 main函数매개 변수 나중에 따릅니다. getopt.getopt(args, options[, long_options])이 세 가지 변수는 인수가 있습니다입니다 python xxx.py일반적으로 매개 변수를 뒤 따르 sys.argv배열,하지만 때문에 우리는 일반적으로 첫 번째 요소를 제거 할 sys.argv첫 번째 요소는 文件名그 자체. 따라서, 우리의 표현이다 sys.argv[1:].

options매개 변수를 해결해야하는 설명하는 문자열입니다. 파라미터는 다음과 같은 변수로하지 않는 경우에는 -h변수 이름의 직접적인 용도. 당신이 통과해야하는 경우 매개 변수의 변수는 증가 뒤에 :예를 들어, n:. 그래서이 사건의 hn:w:의미, 우리가 즉 세 개의 매개 변수를 가지고 -h-n-w어떤 -h변수를 전달하지만, 할 필요가 없습니다 -n-w변수를 전달해야합니다.

long_options매개 변수 말했다 구문 분석 할 필요가 문자열의 배열입니다. long_options친척 options, 우리가 리눅스에서 용어, 우리는 종종 명령의 매개 변수는 쓰기의 다양한 있습니다 참조 가장 일반적인 두 개의 기록을 보유하고, 매개 변수를 수 있도록하는 것입니다 -h--help. 전자는 우리가 무엇을 options, 후자는 동안, long_options.

우리가있는 경우 --help, 다음 long_options은입니다 ['help']. 당신이 필요로하는 매개 변수가 매개 변수를 전달하는 경우, 예를 들어 --name 'Good', 다음 long_options점에서 ['name='], 그래, 그 하나입니다 =.

getopt.getopt튜플 (OPTS, 인수), 반환 opts우리는 매개 변수를 구문 분석 것입니다,하지만 args그것은 나머지 매개 변수를 확인할 수 없습니다. opts그것은 튜플 각 튜플 배열되는 키 값에 대응한다. key우리의 매개 변수 이름이며, value컨텐츠 매개 변수입니다.

클래식 예 :

 

# 코딩 = UTF-8

수입 getopt는

수입 SYS

 

__name__ == '__main__'의 경우 :

OPTS, 인수 = getopt.getopt (sys.argv에 [1], 'HN : w'[ '이름 =' '= 단어', '도움말'])

= '어떤 이름을'이름없는

단어 = '안녕하세요'

키, OPTS 가치 :

 

만약 키 [ '-h'--help '] :

인쇄 '인간 안녕에 프로그램'

인쇄 '매개 변수'

print'-H \ T는 도움말을 표시합니다 '

print'-N의 \의 t 당신의 이름 '

print'-w의 \의 t는 '하고 싶은 말

sys.exit (0)

만약 키 [-N ''--name '] :

이름 = 값

만약 키 [ '-w'--word '] :

워드 = 값

, ',', 단어를 이름을 '안녕하세요, 제 이름을'인쇄

 

클래스 클래스 호출 우선 순위 :

1 def__new __ (CLS)

2, def__init의 __ (자기) :

3 def__call의 __ (자체, X) :

추천

출처www.cnblogs.com/bonelee/p/11086806.html