함께 PyCon 및 아민에 사진을 잘하지 플라스크 튜토리얼 문서에서 모듈 아이디어로 포장 된이 프로젝트는, 당신은 더 많은 사람들의 일을 볼 수 없습니다. 그 다음 프로젝트를 가져 어디서나 수 있도록, 또는으로 할 수 있도록 패키지에 포장 된 플라스크 프로젝트의 일부가 될 수있는 프로젝트 문서의 설치를 볼 수 있습니다 관심
pip install youproject.whl
종속성을 설치 한 후 설치하는 프로젝트의 방법입니다.
공식 포장 지침에서 수 언뜻 : 점프
1.setuptools 프로필
setuptools
그것은이다distutils
(자기 바이두) 향상된 버전. 그것은 더 나은 개발자가 파이썬 패키지를 생성하고 배포하는 데 도움이, 많은 기능을 확장했다. 대부분의 사용자는 파이썬 setuptools에 고급 모듈을 사용합니다.
2. 패킷 포맷
파이썬 라이브러리 패키지 형식은 바퀴와 계란을 포함한다. 휠 형식은 2012 년 PEP427에 의해 정의되는 동안 계란 형식은 setuptools에 의해 2004 년에 도입되었다. 계란은 설치와 사용이 휠은 테스트를 완료하고 배포 전에 구축해야한다, 다시 구축 할 필요가 컴파일되지 않습니다. 이제 널리 사용되고
Wheel
이상
3.setup.py 파일
from setuptools import find_packages, setup
setup(
name='flaskr',
version='1.0.0',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
install_requires=[
'flask',
],
)
相关参数可以[查看](https://setuptools.readthedocs.io/en/latest/setuptools.html#metadata)
공통 매개 변수 설명 :
매개 변수 이름 | 설명 |
---|---|
이름 | 패키지 이름 |
번역 | 패키지 버전 |
저자 | 저자 프로그램 |
작성자 이메일 | 프로그램의 전자 메일 주소의 저자 |
메인테이너 | 수비수 |
maintainer_email | 수비수 메일 주소 |
URL | 이 프로그램의 공식 웹 사이트 주소 |
특허 | 프로그램 인증 정보 |
기술 | 프로그램에 대한 간략한 설명 |
긴 설명 | 프로그램의 상세한 설명 |
플랫폼 | 절차 적용 가능한 소프트웨어 플랫폼 목록 |
분류 | 프로그램의 종류 목록이 속한 |
키워드 | 프로그램의 키워드 목록 |
패키지 | 패키지 디렉토리 (포함 일반적으로 해결해야 할 초기화 폴더 평 파일) |
py_modules | 파이썬 패키지는 단일 파일 목록이 필요합니다 |
DOWNLOAD_URL | 프로그램을 다운로드 |
cmdclass | 사용자 정의 명령 추가 |
package_data | 지정된 데이터 파일 캡슐 포함 할 필요가 |
include_package_data | 자동으로 모든 버전 (CVS / SVN / 자식) 캡슐화 된 데이터 파일을 포함 |
exclude_package_data | include_package_data에 해당하는 경우이 옵션은 일부 파일을 제외하는 데 사용됩니다 |
데이터 파일 | 등 사진, 프로필, 같은 데이터 파일을 포장 할 때 포장해야 |
ext_modules | 지정 확장 모듈 |
스크립트 | 지정된 실행 스크립트는 설치 스크립트는 시스템 경로에 설치됩니다. |
package_dir | 소스 패키지에 매핑되는 디렉토리에서 지정하는 파일 |
필요 | 따라 다른 패키지를 지정합니다 |
제공 | 지정하는 모듈 의존에 제공 될 수있다 |
install_requires | 설치는 설치 종속성을 필요로하는 경우 |
entry_points | 서비스 및 플러그인의 동적 발견, 아래에서 자세히 이야기 |
setup_requires | 자체 패키지를 의존하는 setup.py 파일을 실행하도록 지정 |
dependency_links | 다운로드의 종속성을 지정 |
extras_require | 고급 / 추가 기능은 현재 패키지 번들에 의존 할 필요가 |
zip_safe | 압축하지만, 디렉토리의 형태로 설치되지 않음 |
3.1. find_packages (여기서 = '제외 = ()를 포함 = ('* '))
상기는 setup.py
사용 find_packages()
우리가 쉽게 패키지를 수동으로 추가 할 필요가 없습니다 추가 할 수 있습니다. 기본 검색 setup.py
각이있는 같은 디렉토리에 __init__.py
패키지와 같은 디렉토리를 추가 할 수 있습니다.
함수의 첫 번째 매개 변수는 디렉터리 검색 패키지 매개 변수를 지정하는 데 사용됩니다
exclude
, 제외 할 패키지를 지정하는 데 사용include
포함 할 패키지를 지정합니다.
3.2. include_package_data :
True로 설정, 패키지는 자동으로 파일 사용, 제어 버전을 추가 할 필요가없는 경우 수신 버전 제어 데이터 파일을 추가합니다
package_data
.
3.3manifest.in 파일합니다 (setup.py 같은 디렉토리에)
文件内容就是需要保护在分发包中的文件
include flaskr/schema.sql
graft flaskr/static
graft flaskr/templates
global-exclude *.pyc
复制所有
static
和templates
文件夹中的文件,schema.sql
文件,但是排除所有字节文件。
3.4. zip_safe
zip_safe
参数决定包是否作为一个zip压缩后的 egg 文件安装,还是作为一个以 .egg 结尾的目录安装。因为有些工具不支持 zip 压缩文件,而且压缩后的包也不方便调试,所以建议将其设为 False,即zip_safe=False
3.5. install_requires
如果你的包依赖于其他包,可以指定
install_requires
参数,为一个列表
install_requires=[
'requests>=1.0',
'flask>=1.0'
]
默认从pypi下载安装指定依赖包,也可以指定链接下载依赖
dependency_links = [
"http://packages.example.com/snapshots/foo-1.0.tar.gz",
"http://example2.com/p/bar-1.0.tar.gz",
]
4.本地测试安装
pip3 install -e .
在当前文件夹中寻找setup.py并在开发模式下安装,安装好后通过
pip list
即可查看本地安装的情况。换个文件夹开始导入你的包进行测试,是否可以正常使用。
5.构建发行文件
先安装好wheel
库
pip3 install wheel
安装好后,执行
bdist_wheel
构建发行文件
python3 setup.py bdist_wheel
会生成
dist
目录,下面有一个flaskr-1.0.0-py3-none-any.whl
类似的由项目名称、版本号和项目安装要求的标记组成。复制该文件到别的计算机,通过pip
命令安装该文件。
6.发布包(简略)
如果要将包发布到PyPI(Python Package Index)官方维护的第三方包仓库,需要先注册pypi的账号,然后创建
~/.pypirc
文件进行一些配置
[distutils]
index-servers = pypi
[pypi]
username:xxx
password:xxx
注册项目
python3 setup.py register
成功注册后,构建源码包发布
python3 setup.py sdist upload
最后的最后,别忘了
README.md
和LICENSE
,最好再加上requirements.txt
,可以参考文章开头官网的打包流程