编写setup.py
import io
import re
from setuptools import setup, find_packages
with io.open('generate_captcha/__init__.py', 'rt', encoding='utf8') as f:
version = re.search(r'__version__ = \'(.*?)\'', f.read()).group(1)
with io.open('README.rst', 'rt', encoding='utf8') as f:
readme = f.read()
setup(
name="generate_captcha",
version=version,
url="https://github.com/seekplum/generate_captcha",
keywords=("Pil", "Captcha", "Image"),
description="Generate verification code based on Pil library.",
long_description=readme,
license="GPL-3.0",
author="seekplum",
author_email="1131909224m@sina.cn",
packages=find_packages(),
platforms="any",
install_requires=[
"Pillow>=2.8.1"
],
)
setup.cfg
此文件包含了构建时候的一些默认参数例如构建bdist_wheel的时候的–universal参数
[bdist_wheel]
universal=1
- 效果类似
python setup.py bdist_wheel –universal
MANIFEST.in
此文件在打包的时候告诉setuptools还需要额外打包那些文件,例如单元测试的测试数据文件就需要使用这个文件将其包含进来。当然README,LICENSE这些也可以通过它来一起打包进来。 下面是MANIFEST.in的示例内容:
include README.rst
include requirements.txt
include LICENSE
recursive-include scripts *
recursive-include tests *
生成包
以下所有生成文件将在当前路径下 dist 目录中
- 生成easy_install支持的格式
python setup.py bdist_egg
- 生成pip支持的格式,下文以此为例
python setup.py sdist
共享安装包到PyPI上
注册
- 命令行注册
python setup.py register
- 网页注册
首先先去PyPI注册帐号
配置pip
- ~/.pypirc
[distutils]
index-servers =
pypi
pypitest
[pypi]
username:xxx
password:xxx
[pypitest]
username:xxx
password:xxx
上传
在系统中填写我们在PyPI上注册的信息,包括用户名、密码,并把这个包名注册到PyPI上。
请确保PyPI上没有同名的包
第一个命令 register 使用 setup.py 脚本中 setup() 函数提供的信息,并为您的包在 PyPI 上创建了一个入口。它不会上传任何内容,相反它会创建关于项目的元数据,以便您能够随后上传与保存版本。接下来的两个命令是串连在一起使用的:sdist upload 构造了一个源发布,然后将它上传到 PyPI。但是有一些先决条件,比如要设置您的 .pypirc 配置文件并实际写入 setup.py 的内容。
python setup.py register
python setup.py sdist upload
然后注册并上传自己的包到测试服务器
pypi提供了一个测试服务器,我们可以在这个测试服务器上做测试。
python setup.py register -r pypitest
python setup.py sdist upload -r pypitest
上传至PyPI
若上面的测试成功,我们就可以按照相同的步骤将包注册并上传。
python setup.py register -r pypi
python setup.py sdist upload -r pypi
注意
上传包后,不修改version版本无法再次上传,即使在帐号中把项目删了
1.上传到PyPI上的包很有可能用pip或easy_install下载失败,提示can not find a version satisfy request xxxxx. 原因是这个包生成的时候默认是当作dev的,所以不能release,于是要自己手动修改它自动生成的配置文件setup.cfg,把其中的tag_build = dev 改成 tag_build =
2.经过试用后发现用pastescript生成的包符合PyPI的条件可以上传,但是它传上去的只是一个空的包,里面没有mylib.py这个文件,也许是需要用其他的参数生成包,而不是basic_packge;而自己用python setup.py sdist 生成的包则没有任何问题。最简单的方法就是在生成包的时候使用python setup.py sdist –formats=zip,gztar,这样上面两个问题都不存在了
.editorconfig
EditorConfig帮助开发人员定义和维护一致的编码风格在不同的编辑器和IDE。EditorConfig项目包含一个文件格式定义编码风格和文本编辑器插件的集合。EditorConfig文件易于阅读并且他们与版本控制器很好地合作。
.travis.yml
Travis CI的配置文件,github可以方便的结合Travis CI做持续集成(Continuous Integration,简称CI)
.appveyor.yml
appveyor和Travis、CircleCI一样,都是做继续集成。
tox.ini
tox为了自动化和标准化 Python 的测试工作。主要整合了 2 块内容:分别是,virtualenv 管理不同版本 Python,以及结合不同测试工具命令行调用。
.gitattributes
Git的gitattributes文件是一个文本文件,文件中的一行定义一个路径的若干个属性.