模块打包

| 标签 python  dist  pypi  setup  浏览次数: -

编写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文件是一个文本文件,文件中的一行定义一个路径的若干个属性.


上一篇 matplotlib绘图     下一篇 MySQL 安装部署和配置参数
目录导航