Table of Contents generated with DocToc
撸完自己的代码,本地跑起来畅爽无阻~这种时候自己一个人痛快怎么行,是时候把代码上传到pip&github让大家一起爽爽了。但如果只是源码就太low了,要怎么才能做成第三方库那样安装后使用呢?
如果想让别人能够安装你的源码,作为第三方库那样使用的话,就需要编写setup.py
文件了。
在项目根目录下建立setup.py
文件
假设项目目录如下:
project/
example/
__init__.py
entry.py
setup.py
run.py
LICENSE
题外话:不知道给自己的开源项目用哪种LICENSE?可以看看这个网站:
废话少说,直接在代码中学习如何编写
# 引用包管理工具setuptools,其中find_packages可以帮我们便捷的找到自己代码中编写的库
from setuptools import setup, find_packages
setup(
name='example', # 包名称,之后如果上传到了pypi,则需要通过该名称下载
version='0.1', # version只能是数字,还有其他字符则会报错
keywords=('setup', 'example'),
description='setup example',
long_description='',
license='MIT', # 遵循的协议
install_requires=[], # 这里面填写项目用到的第三方依赖
author='ecmadao',
author_email='[email protected]',
packages=find_packages(), # 项目内所有自己编写的库
platforms='any',
url='' # 项目链接,
include_package_data = True,
entry_points={
'console_scripts':[
'example=run:main'
]
},
)
着重了解下entry_points
:
当你写的Python项目可以在命令行里,通过运行某个文件跑起来的时候,则可以配置entry_points
console_scripts
接受一个list作为值,list里的各个value配置了命令行的语句。以上面的example=run:main
为里,它表明,当你安装了该项目之后,就可以在命令行中通过:
$ example
来运行项目根目录下run.py
内的main
函数。即是说:
entry_points : [可执行程序名]=引入的包名.子包名.模块名:入口函数
编写好了setup,尝试下本地安装:
# 在项目根目录下
$ python setup.py install
so easy!
setup.py
写好了,本地测试安装也ok了,那么我们还可以把代码上传到pip,那样的话别人就能够通过pip install XXX
来直接安装我们编写的库。
先到pypi注册一个账号,之后可以在上传代码的过程中绑定预先注册好的账号
# 在项目根目录下
$ python setup.py register
# 之后安装提示登录pypi账号
$ python setup.py sdist
# 生成支持pip的文件
$ python setup.py sdist upload
# 生成支持pip的文件并上传代码
注:在第一步setup.py register
时,可能会因为代码中的中文字符串产生如下错误:
$ python setup.py register
# SyntaxError: Non-ASCII character '\xe4' in file /Users/ecmadao1/Dev/Python/Spider-12306/train/__init__.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
则需要在使用中文的文件开头添加注释# -*- coding: UTF-8 -*-
- 更新代码里的版本号
- 重复upload的步骤,会自动上传并升级库至新版
# 查看具体安装文件
$ pip3 show --files SomePackage
# 列出所有的包
$ pip3 list
# 检查有无升级
$ pip3 list --outdated
# 更新包
$ pip3 install -U|--upgrade <package>
# 卸载包
$ pip3 uninstall <package>