python (库、应用程序 ) (打包、上传、构建、安装) => LTS
2016-09-05 14:23
603 查看
首先你要有一个setup.py (不管用上古的distutils还是标准的setuptools还是其他先进的打包工具)
打包成exe
打包成rpm
打包成whl
Wheel Python Limit:
setup.py 上联requirements.txt 下联MANIFEST.in, 中走LICENSE
参考
requirements.txt
(可以不带版本号)
MANIFEST.in
添加非py文件
以setuptools为例,
其中, console_scripts是会打包成所在
对应平台的二进制文件, 比如Windows: pip.exe
另外注意
潜在的应用场合
以BSD (3-clauses)为例
安装 twine (
write a ~/.pypirc file like so.
根据官方教程,
注意:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/03/ef4e0c2665aceaf6426e815f721082e8)
库的打包
打包成tar.gzpython setup.py sdist
打包成exe
python setup.py bdist_wininst
打包成rpm
python setup.py bdist_rpm(rpm 指令支持)
打包成whl
python setup.py bdist_wheel(需要
pip install wheel)
Wheel Python Limit:
--universal Specifies that a pure-python wheel is "universal" (i.e., it works on any version of Python). This equates to the tag "py2.py3". --python-tag XXX Specifies the precise python version tag to use for a pure-python wheel. --py-limited-api {cp32|cp33|cp34|...} Specifies Python Py_LIMITED_API compatibility with the version of CPython passed and later versions. The wheel will be tagged cpNN.abi3.{arch} on CPython 3. This flag does not affect Python 2 builds or alternate Python implementations. To conform to the limited API, all your C extensions must use only functions from the limited API, pass Extension(py_limited_api=True) and e.g. #define Py_LIMITED_API=0x03020000 depending on the exact minimun Python you wish to support.
setup.py 上联requirements.txt 下联MANIFEST.in, 中走LICENSE
pip freeze > requirements.txt
参考
requirements.txt
alembic==0.8.6 bleach==1.4.3 click==6.6 dominate==2.2.1 Flask==0.11.1 Flask-Bootstrap==3.3.6.0 Flask-Login==0.3.2 Flask-Migrate==1.8.1 Flask-Moment==0.5.1 Flask-PageDown==0.2.1
(可以不带版本号)
MANIFEST.in
include LICENSE include README.rst include requirements.txt recursive-include polls/static * recursive-include polls/templates *
添加非py文件
import os from setuptools import find_packages, setup with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme: README = readme.read() with open('requirements.txt') as f: required = f.read().splitlines() # allow setup.py to be run from any path os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) setup( name = 'minghu6', version = '1.0.0', install_requires = required, packages = find_packages(), entry_points = { 'console_scripts' : ['captcha=minghu6.tools.captcha:interactive', 'ffmpeg_fix=minghu6.tools.ffmpeg_fix:interactive', 'fileformat=minghu6.tools.fileformat:interactive', 'launch=minghu6.tools.launch:interactive', 'proxy_ip=minghu6.tools.proxy_ip:interactive', 'yinyuetai=minghu6.tools.Tai_downloader:interactive', 'text_editor=minghu6.tools.textEditor:interactive', 'youtube=minghu6.tools.Tube_downloader:interactive', 'countlines=minghu6.tools.count_lines:interactive', 'add_pypath=minghu6.tools.add_py_path:interactive', 'tieba=minghu6.tools.Tieba_downloader:interactive', ], }, include_package_data = True, licence = 'BSD License', description = 'A Core Utils Set for minghu6.', long_description = README, url = 'https://github.com/minghu6/minghu6_py', author = 'minghu6', author_email = 'a19678zy@163.com', classifiers=[ 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 3', ], )
以setuptools为例,
其中, console_scripts是会打包成所在
对应平台的二进制文件, 比如Windows: pip.exe
'<binary-file-name> = <setup.py 下的pacage路径>:<入口函数名>'
另外注意
classifiers是部署应用的必要环境,而不是支持的环境,所以不必过于细致,限制了
潜在的应用场合
Copyright (c) 2015, minghu6 <a19678zy@outlook.com> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
以BSD (3-clauses)为例
上传至PyPI
注册PyPI账户PyPI Doc ref安装 twine (
pip install twine)
write a ~/.pypirc file like so.
[distutils] index-servers=pypi [pypi] repository = https://upload.pypi.org/legacy/ username = <username> password = <password>
twine upload dist/*
通过pip安装
假设包名为minghu6 pip install -v minghu6==1.0.1
通过travis 自动部署
安装travis,根据官方教程,
注意:
1.通过travis的 Job log(包括raw) 查看部署的详细信息(trace) 2.tags:true 需要与 all_branches: true 同时开启 3.使用travis lint 进行格式检查,可能会超时报错,多试几次
Add badge for pypi
仅支持rst格式, 且需要注意冒号缩进.. image:: https://landscape.io/github/minghu6/minghu6_py/master/landscape.svg?style=flat :target: https://landscape.io/github/minghu6/minghu6_py/master :alt: Code Health
相关文章推荐
- 敏捷开发之产品日日新,一步通之---自动化代码构建->自动化打包->自动化安装部署
- python第三方库的安装=>LTS
- DotNet4应用程序打包工具->升级版【二】安装工具分析
- 应用程序的打包,安装和上传
- Python Fabric 模块 打包上传文件及检查 批量安装lnmp环境 版本发布及回滚
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- [转]手把手教你用C#(.NET)打包应用程序(安装程序)【卸载模块已添加】
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- [转]C#:手把手教你用C#打包应用程序(安装程序卸载程序)
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- python-&gt;FTP上传下载文件
- 手把手教你用C#打包应用程序(安装程序)
- ASP.NET桌面应用程序的打包(安装部署)过程(含视频教程下载地址)
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- 关于C#winform应用程序打包(包括数据库的安装)的问题!
- 关于C#winform应用程序打包(包括数据库的安装)的问题!
- ecpipse构建GUI项目===>>>可视化插件visual editor安装
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】