와 함께 일하기 시작했 Python. 나는've 추가 requirements.txt및
setup.py내 프로젝트입니다. 하지만,나는 아직도에 대한 혼란의 목적은 모두 파일이 있습니다. 내가 읽는 것
setup.py설계에 대한 재배포 가능한 것이고
requirements.txt`한 비 redistributable 것들입니다. 하지만 나의 특정이 정확합니다.
어떻게 그 두 파일의 진정으로 사용할 수?
requirements.txt
이것은 당신을 설정하는 개발환경 통합관리가 가능합니다. 사 프로그램pip
를 설치하는 데 사용할 수 있습니다에 나열된 모든 패키지 파일이 하나의 급습했다. 그 후의 개발을 시작할 수 있의 python 스크립트입니다. 특히 유용할 계획인 경우 다른 사람을 개발에 기여 또는 사용할 가상 환경입니다.
이것은 어떻게 당신이 그것을 사용:
pip install -r < requirements.txt
setup.py
이를 만들 수 있는 패키지를 재배포할 수 있습니다. 이 스크립트가 설치 패키지에서 최종 사용자는's,시스템을 준비하는 개발 환경으로pip 설치-r<requirements.txt
않습니다.
볼이 대답에 대한 자세한 내용 setup.py.
의 종속성을 귀하의 프로젝트에 나열된 모두 파일이 있습니다.
짧은 대답은requirements.txt
는 패키지 목록 요구 사항만 있습니다.setup.py
다른 한편으로는 설치 스크립트입니다. 지 않는 경우't 에 계획을 설치하는 파이썬 코드는 일반적으로만 필요할 것requirements.txt
.
파일setup.py
에 대해 설명합한 패키지의 종속성으로 인해 파일의 설정과 모듈을 포장해야(또는 컴파일의 경우,기본 모듈을(즉,서면에서 C)),메타데이터 추가를 python 패키지 목록을(예를 들어 패키지 이름,패키지 버전,포장 설명,저자,...).
기 때문에 모두 파일 목록을 종속성으로 이어질 수 있습의 조금을 제공합니다. 자세한 내용은 아래를 참조하십시오.
requirements.txt
이 파일 목록 python package 요구 사항입니다. 그것은 일반 텍스트 파일(선택적으로 의견을)나열하는 패키지 dependencies 귀하의 프로젝트 파이썬(one per line). 그것은 does not 하는 방식을 설명하는 파이썬 패키지가 설치되었습니다. 당신은 일반적으로 소비하는 요건을 가진 파일의pip 설치-r requirements.txt
.
름의 텍스트 파일은 임의의,하지만 종종requirements.txt 에 의해
규칙입니다. 을 탐험 할 때 소스 코드를 저장소의 다른 python 패키지할 수 있습에 우연히 발견 같은 다른 이름을dev-dependencies.txt
또는dependencies-dev.txt
. 그와 동일한 목적으로dependencies.txt
그러나 일반적으로 목록에 추가 종속성 관심 개발자의 특정 패키지,즉 테스트를 위한 원본 코드(예:pytest,pylint,etc.) 하기 전에 릴리스입니다. 사용자는 패키지의 일반적으로 않을 것't 해야의 전체 세트 개발자의 종속성을 패키지를 실행합니다.
는 경우 여러requirements-X.txt
개가 존재하는,일반적으로 다음 중 하나입 목록이타의 종속성과 다른 구간으로,또는 시험에 의존한다는 것을 설명합니다. 일부 프로젝트에서는 또한 캐스케이드의 요구 사항을 파일이 있을 때,즉 하나의 요구 사항을 파일이 다른 파일을 포함(예). 이렇게 줄일 수 있고 반복합니다.
setup.py
이 python 스크립트를 사용하는과 함께 진행됩
모듈을 정의하는 파이썬 패키지(이름,파일이 포함된 패키지 메타데이터,설치). 그것은,다음과 같requirements.txt
고,또한 목록으로 런타임의 종속성 패키지입니다. 에서 사용되었다는 사실상 방법을 구축하고 설치하는 파이썬 패키지지만,그것의 단점을 가지고있는 시간에는 유독 개발의 새로운"메타 패키지 관리자",다음과 같 pip. 를 들어의 단점과 함께 진행됩는 그것의 무능력을 여러 개 설치 버전의 동일한 패키지 그리고 부족의 제거 명령입니다.
When python 사용자가pip 설치합니다./pkgdir_my_module
(또는pip 설치 모듈
),핍 실행됩니다setup.py
에서 지정된 디렉터리(또는 모듈). 마찬가지로,어떤 모듈이 있setup.py
할 수 있pip
설치,예를 들어 실행하여pip 설치합니다.
동일한 폴더에 있습니다.
난 정말 모두 필요?
짧은 대답은 없지만,그's 좋은 모두가합니다. 그들은 달성하는 다른 목적으로,그러나 그들은 둘 다 사용할 수 있는 목록의 종속성입니다.
거기에 하나의 트릭을 고려할 수 있습 복제를 방지하기 위해 귀하의의 목록을 간의 종속성requirements.txt
및setup.py
. 만약 당신이 작성을 완벽하게 작동setup.py
당신의 패키지에 대한 이미 당신의 종속성을 주로 외부에,당신은 고려할 수 있는 간단한requirements.txt
만으로 다음과 같다:
# requirements.txt
#
# installs dependencies from ./setup.py, and the package itself,
# in editable mode
-e .
# (the -e above is optional). you could also just install the package
# normally with just the line below (after uncommenting)
# .
의e
특별한pip 설치
옵션을 설치된 패키지에서 editable 모니다. 을 때pip-r requirements.txt
에서 실행하면 이 파일 핍 설치의 종속성을 통한 목록에서./setup.py
. 편집 가능한 옵션은 장소는 심볼릭 링크에서 당신의 설치 디렉터리(신의 달걀이나 사본을 보관). 그것은 개발자의 코드를 편집하는 장소에서 저장소에서 없이 수명을 단축시키는 원인이 됩니다.
당신은 또한 활용할 수 있습니다 무엇's 라"과 함께 진행됩 엑스트라"할 때는 두 파일에서 당신의 패키지합니다. 정의할 수 있는 선택적인 패키지 setup.py 에서 사용자 지정 카테고리를 설치 패키지들에서 그냥 카테고리와 핍:
``python
에서 수행 가져오기 설정 설정( 이름="FOO" ... extras_require={ 'dev': ['pylint'], '구축': ['요청'] } ... ) ``
그리고,요구 사항에 파일: ``
-e path/to/mypkg[빌드] ``
이 모든 종속 목록부 setup.py.
Note:당신은 일반적으로 실행하고 핍 setup.py 에서 샌드박스와 같은 그 생성 프로그램과 함께러나 생물 과학과 같은 다른 분야
. 를 이용하여 설치하는 파이썬 패키지 밖에서의 컨텍스트의 프로젝트를's 개발환경 통합관리가 가능합니다.
완전성을 위해,여기에는 방법이다 나는 그것에는 3 가지 각도입니다.
이는 정밀한 설명서에서 인용하였다official documentation(중점을 내):
반면 install_requires(에 setup.py)정의 종속성을에 대한 단일 프로젝트로,요구 사항을 파일은 종종을 정의하는 데 사용되는 요구 사항에 대한 완전한 파이썬 환경.
반면 install_requires 요구 사항을 최소화하고,요구 사항을 종종 파일을 포함한 완전한 목록의 고정된 버전에 대한 목적의 달성을 반복 가능한 설비의 완벽한 환경.
하지만 그것은 여전히 있지 않을 쉽게 이해할 수 있도록,그래서 다음 섹션에서,거 2 사실적인 예는 방법을 설명하기 위해 2 개의 방법은 사용되어야하는데,다르게한다.
*경우에 귀하의 프로젝트foo
가 출시되는 독립형으로 라이브러리(즉,다른 사람을 것이다가져오기 foo
),그리고(당신과 당신의 하위 사용자)고 싶은 것 유연한 선언에 의존성,그래서 당신의 라이브러리는지(아무것도 보이지 않)수"까"는 것에 대해 정확한 버전의 종속성을 해야 합니다. 그래서 일반적으로,당신 setup.py 포함하는 것선을 다음과 같다:
install_requires=[ 'A>=1,<2', 'B>=2' ]
*하려는 경우에는 어떻게 든"document"또"pin"당신의 정확한 현재 환경에 대한 귀하의 응용 프로그램bar
,의미,사용자 또는 사용자의 사용자가 사용하고 싶 응용 프로그램막으로 인해 발생하는 즉,실행
python bar.py`할 수 있습을 동결의 환경에는 항상 동일하게 동작합니다. 이러한 경우에는,당신의 요구 사항에 파일을 다음과 같이 보일 것입니다.
A==1.2.3 B==2.3.4
pylint==3.4.5
*을 개발하는 경우 응용 프로그램bar
에 의해 사용되는python bar.py
는 경우에도,그"단지 스크립트에 대한 재미있",당신은 여전히 사용하는 것이 좋 requirements.txt 기 때문에,누가 알고 다음 주(일어나는 크리스마스)을 받는 새로운 컴퓨터 선물로,그래서 당신은 설정할 필요가 당신의 정확한 환경을 수 있습니다.
*을 개발하는 경우에는 라이브러리foo
에 의해 사용되는수입 foo
,당신을 준비해야 setup.py. 기간입니다.
하지만 당신은 여전히 선택할 수 있습니다 또한 제공 requirements.txt 동시에는 할 수 있습니다:
(a)중에서A==1.2.3
스타일(자세한 내용은 설명서에#위의 2);
(b)또는 단지 포함하는 마법의 단일.
.
는 것이 거의 동일하면"설치 요구 사항에 따라 설치됩니다.py"는 중복되지 않고. 개인적으로 저는 이것을 고려한 접근방식의 종류에 관계,추가하고 혼동하지 않는 정말 가치를 추가하지만,그것은 그럼에도 불구하고 속에서 파생된 접근 방식에 의해 언급 Python 포장 관리자 도날드에서그의 블로그에 포스팅.