编写工具包代码
代码结构
- dir_name
- src - __init__.py - package_name - __init__.py - module1.py - module2.py - setup.py```
### 编写setup.py文件内容
下面是一个简单的setup.py文件,详细的参数配置可以参考
[ An Introduction to Distutils](https://docs.python.org/3.6/distutils/introduction.html#distutils-simple-example)
```python
# 编写完包源码后,python setup.py sdist生成pip压缩包
# 解压压缩包,python setup.py install 安装自己的包,就可以引用了
from distutils.core import setup
from setuptools import find_packages
setup(name='package_name', # 包名
version='2020.4.10', # 版本号
description='',
long_description='',
author='your_name',
author_email='xxx@qq.com',
url='xxx',
license='',
install_requires=[],
classifiers=[
'Intended Audience :: Developers', 'Operating System :: OS Independent', 'Natural Language :: Chinese (Simplified)', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.6', 'Topic :: Utilities' ], keywords='',
packages=find_packages('src'), # 必填
package_dir={'': 'src'}, # 必填
include_package_data=True,
)```
`package_name/__init__.py`内容如下
```python
from __future__ import absolute_import
# 上面👆这个必须位于文件开头,否则后面运行会报错
from .module1 import *
from .module2 import *
module1.py 代码如下
# 加法
def add(a,b):
return a+b```
module2.py 代码如下
```python
# 减法
def sub(a,b):
return a-b
# 乘法
def mul(a,b):
return a*b```
### 打包安装自定义包
在 dir_name 目录下执行
`python setup.py sdist`
生成 pip 压缩包, 没有这刷新项目
进入 `packet_demo/dist` 文件夹,执行
`pip install xxx(自己包名,自由替换).tar.gz`
![](//img1.sycdn.imooc.com/5e91c901000155b819420470.png)
安装后,就可以直接调用了
```python
import package_name
print(package_name.add(1,2))
上传代码到 PyPI
检查 setup.py
在上传之前,可以先通过命令校验 setup 写错了没有:python setup.py check
如果只有 running check
没有输出任何错误,则说明格式正确。
注册 pypi.org
然后需要在这里注册一个 PyPI 的帐号,注册完成之后,就可以将这个代码库注册到 PyPI 了:
https://pypi.org/
注册以后就可以打包上传了
# 打包
python setup.py sdist
# 安装上传组件
pip install twine
# 上传
twine upload ./dist/xxx(自己包名,自由替换).tar.gz`
会让你输入账号密码
最后去 PyPI 上看下我们刚刚上传的库
试试看我们自己发布的库pip install package_name
import package_name
print(package_name.add(1,2))