代码改变世界

pypi上传库

2017-01-03 10:07  cmsd  阅读(629)  评论(0编辑  收藏  举报

把程序打包上传到PyPi版本库中

更新:新版上传变化了 详见

 

pip install twine

python setup.py sdist

twine upload dist/* 

或者某个版本

twine upload dist/jumpserver-python-sdk-0.0.15.tar.gz

 

 

转自 

1 首先必须要按照以下文件结构

├── douban
│   ├── cli.py
│   ├── douban.py
│   ├── douban_token.py
│   ├── getch.py
│   └── __init__.py
├── README.md
└── setup.py
  • 必须至少一个包,即上面的douban,把模块都放在包下,且包中必须有__init__.py文件(可以为空)
  • 必须有一个setup.py文件

2 setup.py文件

#-*- encoding: UTF-8 -*-
from setuptools import setup, find_packages
import sys, os
"""
打包的用的setup必须引入
"""

VERSION = '0.2.0'

with open('README.md') as f:
    long_description = f.read()

setup(
      name='douban.fm', # 文件名
      version=VERSION, # 版本(每次更新上传Pypi需要修改)
      description="a tiny and smart cli player of douban.fm based on Python",
      long_description=long_description, # 放README.md文件,方便在Pypi页展示
      classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
      keywords='python douban douban.fm terminal', # 关键字
      author='taizilongxu', # 用户名
      author_email='468137306@qq.com', # 邮箱
      url='https://github.com/taizilongxu/douban.fm', # github上的地址,别的地址也可以
      license='MIT', # 遵循的协议
      packages=['douban'], # 发布的包名
      include_package_data=True,
      zip_safe=True,
      install_requires=[
        'termcolor',
      ], # 满足的依赖
      entry_points={
        'console_scripts':[
            'douban.fm = douban.douban:main' 
        ]
      },
)
  • entry_points : [可执行程序名]=引入的包名.子包名.模块名:入口函数.这个要注意了,主程序要引入main函数进行执行.好让包找到执行的位置

3 安装

如果不上传文件,只在本机中安装,那么可以运行以下命令

python setup.py install

这样就在本机安装了程序,在shell中输入douban.fm(刚才在entry_points中输入的可执行程序名),就可以执行了

4 上传到Pypi

先在 https://pypi.python.org/pypi 注册个Pypi号,认证邮箱.

然后再在你的用户目录下新建一个.pypirc文件,输入如下:

[distutils]
index-servers =
    pypi

[pypi]
username:
password:

把username和password填上保存就可以了

回到你的setup.py目录,输入如下命令

sudo python setup.py register sdist bdist_egg upload

你的包就可以发到Pypi里了,通过pip或者easy_install就可以下载你的包了

5 更新Pypi包

当包版本更新后,需要在你的setup.py文件里修改VERSION,然后运行第4部的命令就可以了(如果不更新VERSION包就不能上传成功)