일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 스칼라 강좌
- 하이브리드앱
- 스칼라
- akka 강좌
- CORDA
- Akka
- 스위프트
- 파이썬 데이터분석
- 안드로이드 웹뷰
- 파이썬
- 파이썬 강좌
- Hyperledger fabric gossip protocol
- 블록체인
- 스칼라 동시성
- 그라파나
- 엔터프라이즈 블록체인
- 하이퍼레저 패브릭
- 파이썬 동시성
- play2 강좌
- 이더리움
- Actor
- Adapter 패턴
- 파이썬 머신러닝
- Play2
- play 강좌
- Golang
- 주키퍼
- 플레이프레임워크
- Play2 로 웹 개발
- hyperledger fabric
- Today
- Total
HAMA 블로그
[Flask 문서번역] Setuptools 을 이용한 디플로이 본문
링크 : http://flask-docs-kr.readthedocs.io/ko/latest/index.html
Deploying with Setuptools
Setuptools는 Python 라이브러리 및 확장을 배포하는데 일반적으로 사용되는 익스텐션 라이브러리입니다. Python과 함께 제공되는 기본 모듈 설치 시스템인 distutils를 확장하여 더 큰 응용 프로그램을보다 쉽게 배포 할 수있게 해주는 보다 복잡한 여러 구조를 지원합니다.
- support for dependencies: 라이브러리 또는 응용 프로그램은 자동으로 설치 될 다른 의존 라이브러리의 목록을 선언 할 수 있습니다.
- package registry: setuptools는 당신의 패키지를 파이썬 인스톨에 등록합니다. 이렇게 하면 한 패키지가 다른 패키지에서 제공 된 정보를 쿼리 할 수 있습니다. 이 시스템의 가장 잘 알려진 기능은 한 패키지가 다른 패키지를 확장하기 위해 다른 패키지가 후킹 할 수 있는 "진입점"을 선언 할 수있게 해주는 진입점 지원 기능입니다.
- installation manager: pip 다른 라이브러리들을 인스톨 할 수 있습니다.
python.org에서 Python 2 (> = 2.7.9) 또는 Python 3 (> = 3.4)를 설치했다면 이미 시스템에 pip와 setuptools가있을 것입니다. 그렇지 않으면 직접 설치해야합니다.
플라스크 자체와 PyPI 에서 찾을 수있는 모든 라이브러리는 setuptools 또는 distutils와 함께 배포 됩니다.
이 경우에는 응용 프로그램이 yourapplication.py라고 가정하고 모듈을 사용하지 않고 패키지만 사용한다고 가정합니다. 응용 프로그램을 아직 패키지로 변환하지 않았다면 Larger Applications패턴으로 넘어 가서 이것이 어떻게 수행되는지 확인하십시오.
setuptools를 사용한 작업 배포는 좀 더 복잡하고 자동화된 배포 시나리오를 위한 그저 첫 번째 단계입니다. 프로세스를 완전히 자동화하려면 Deploying with Fabric 장을 읽으십시오.
기본 Setup 스크립트
Flask를 설치 했으므로 시스템에서 setuptools를 사용할 수 있습니다. 플라스크는 이미 setuptools에 의존합니다.
표준 항목으로 . vritualenv 을 사용하는 것이 좋습니다.
설정(setup)코드는 항상 응용 프로그램 옆에 setup.py라는 파일로 들어갑니다. 파일의 이름은 관례에 불과하지만 모두가 그 이름을 가진 파일을 찾을 것이므로 변경하지 않는 것이 좋습니다.
Flask 응용 프로그램의 기본 setup.py 파일은 다음과 같습니다.
서브 패키지를 명시적으로 나열해야한다는 점에 유의하십시오. setuptools가 자동으로 패키지를 검색하도록 하려면 find_packages 함수를 사용할 수 있습니다.
setup 함수에 대한 대부분의 매개변수는 자체 설명적이어야 하며 include_package_data 및 zip_safe는 아닐 수도 있습니다. include_package_data는 MANIFEST.in 파일을 찾고 패키지데이터와 일치하는 모든 항목을 설치하도록 setuptools에 지시합니다. 이것을 사용하여 정적 파일과 템플릿을 Python 모듈과 함께 배포합니다 (Distributing Resources참조). zip_safe 플래그는 zip 아카이브 생성을 강제하거나 방지하는 데 사용될 수 있습니다. 일반적으로 패키지가 zip 파일로 설치되는 것을 원하지 않는 경우가 있습니다. 일부 도구는 패키지를 지원하지 않으므로 디버깅을 훨씬 더 어렵게 만듭니다.
Tagging Builds
릴리스 빌드와 개발 빌드를 구별하는 것이 유용합니다. 이 옵션을 구성하려면 setup.cfg 파일을 추가하십시오.
[egg_info] tag_build = .dev tag_date = 1
[aliases] release = egg_info -RDb ”
python setup.py sdist를 실행하면 ".dev" 및 현재 날짜가 더해진 개발 패키지가 만들어집니다
: flaskr-1.0.dev20160314.tar.gz.
python setup.pyrelease sdist를 실행하면 버전 : flaskr-1.0.tar.gz 만있는 릴리스 패키지가 생성됩니다.
Distributing Resources
방금 만든 패키지를 설치하려고 하면 static 또는 템플릿과 같은 폴더가 설치되지 않은 것을 알 수 있습니다. 그 이유는 setuptools가 어떤 파일을 추가할 지 모르기 때문입니다. 해야 할 일은 setup.py 파일 옆에 MANIFEST.in 파일을 만드는 것입니다. 이 파일은 tarball에 추가되어야하는 모든 파일을 나열합니다.
설치 기능의 include_package_data 매개 변수를 True로 설정하지 않으면 MANIFEST.in 파일에 등록하더라도 사용자를 위해 설치되지 않는다는 사실을 잊지 마십시오!
Declaring Dependencies
종속성은 install_requires 매개 변수에서 목록으로 선언됩니다. 이 목록의 각 항목은 설치시 PyPI에서 가져와야하는 패키지의 이름입니다. 기본적으로 항상 최신 버전을 사용하지만 최소 및 최대 버전 요구 사항을 제공 할 수도 있습니다. 여기에 몇 가지 예가 나와 있습니다.
앞서 언급했듯이, 의존성은 PyPI에서 가져옵니다. PyPI에서 찾을 수 없는 패키지에 의존하고, 다른 사람과 공유하고 싶지 않은 내부 패키지라면? 마치 PyPI 항목이 있는 것처럼 작업하되 setuptools가 tarball을 찾아야 하는 대체 위치 목록을 제공하십시오.
페이지에 디렉토리 목록이 있고 페이지의 링크가 올바른 파일 이름을 가진 실제 tarball을 가리키고 있는지 확인하십시오. 이것이 setuptools가 파일을 찾는 방법입니다. 패키지가 포함 된 내부 회사 서버가 있는 경우 해당 서버에 대한 URL을 제공하십시오.
Installing / Developing
응용 프로그램을 설치하려면 (이상적으로는 virtualenv에) setup.py 스크립트를 install 매개 변수와 함께 실행하십시오. 응용 프로그램을 virtualenv의 site-packages 폴더에 설치하고 모든 종속성을 다운로드하여 설치합니다.
패키지를 개발 중이며 요구 사항이 설치되게 하려는 경우 대신 develop
명령을 사용할 수 있습니다.
이렇게하면 데이터를 복사하는 대신 사이트 패키지 폴더에 대한 링크를 설치하는 장점이 있습니다. 각 변경 후에 설치를 다시 실행하지 않고도 코드 작업을 계속할 수 있습니다.
'Flask' 카테고리의 다른 글
Flask,VueJS,RethinkDB 로 파일 저장 서비스 만들기 - (1) [번역] (0) | 2017.07.27 |
---|---|
Flask 웹어플리케이션 구축하기 (0) | 2017.06.28 |
Flask 와 AngularJS 1.x 웹개발 세팅하기 (번역) (0) | 2017.03.15 |
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기 (0) | 2017.03.15 |