Bigzhu's den

python 打包发布

bigzhu

update: 看这里 python 代码加密保护

python 打包发布实践, 官方文档在这里 https://packaging.python.org/tutorials/distributing-packages/

twine

安装 twine, 要用这个工具来上传你的项目

sudo pip install twine

setup.py

setup.py 是最核心的文件, 放项目目录下, 定义了项目名称版本等主要信息.

主要结构是把函数 setup 引进来 from setuptools import setup, 然后调用这个函数, 调用参数说明在这里setup-args

把 setup.py 写好

from __future__ import unicode_literals
from setuptools import setup
lib_classifiers = [
    "Development Status :: 4 - Beta",
    "Programming Language :: Python :: 2",
    "Programming Language :: Python :: 2.7",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.4",
    "Programming Language :: Python :: 3.5",
    "Programming Language :: Python :: 3.6",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Topic :: Software Development :: Libraries",
    "Topic :: Utilities",
]
setup(name="pp_bz",
      version='1.0.1',
      author="bigzhu",
      author_email="vermiliondun@gmail.com",
      url="https://github.com/bigzhu/pp",
      keywords='password producer',
      py_modules=["pp"],
      install_requires=[],
      description='use your key and site url create your site unique password',
      license="MIT",
      classifiers=lib_classifiers
      )

其它的 README.rst LICENSE.txt 什么的, 都可以先不管

wheel

wheel 是 python 最新的打包方式, without needing to go through the “build” process. 这是什么意思实在没明白

sudo pip install wheel

python 2 3 都能用, 就运行

python setup.py bdist_wheel --universal

可以看到生成了 dist 文件夹

注册

pypi.python.org 注册一个帐号

会问你 PGP Key ID, 先不用填

才发现我果然又注册过了, 但是密码果然记不住, 找回密码, 果断用 pp 生成一个

上传

twine upload dist/*

中问会你用户名和密码

如果没有同名项目, 那么就传上去了, 可以下载了.

进阶

发布为可执行文件

pp 只有一个文件, 不要按那些网上说的去建成模块

改一下 setup.py, 加入

      entry_points={
          "console_scripts": [
              "pp = pp:main",
          ],
      },

这样安装完成后, 会在 /usr/local/bin/pp 生成一个可执行的 pp 文件, 直接用就行了.

bigzhu
Everything is learnable