... Rei ...
... cjlmonster@163.com ...
... 白开水与方便面 ...
... Rei ...
... cjlmonster@163.com ...
... 白开水与方便面 ...
2021-07-01 约 260 字 预计阅读 2 分钟 Python
setuptools 是一个Python源码打包工具,通过它,我们可以很方便的对我们的Python代码进行打包和分发,我们平时使用的很多第三方库,就是通过它进行打包和分发的,所以我们能够很方便的通过 pip 安装和使用,下面简单介绍下打包和分发。
这里需要安装几个库,setuptools是必须的,还有 wheel,用于打包成 wheel格式的二进制包,twine用于发布到 pypi
$ pip install setuptools wheel twine
这里使用 PyCharm开发工具开发项目,新建一个项目 Demo01,并新建一些文件,项目目录树如下: 项目根目录下
src 源码目录下
打开 first.py 文件,新建两个方法,等下用于生成脚本测试
from setuptools import setup, find_packages
import os
# 读取文件
def read_file(filename):
with open(os.path.join(os.path.dirname(__file__), filename), encoding='utf-8') as f:
long_description = f.read()
return long_description
setup(
# 基本信息
name="demo01", # 项目名,确定唯一,不然上传 pypi 会失败
version="1.0.0", # 项目版本
author='cjlmonster', # 开发者
author_email='cjlmonster@163.com', # 开发者邮箱
description='这是一个测试项目', # 摘要描述
long_description=read_file('readme.md'), # 详细描述,一般用于 pypi 主页展示
long_description_content_type="text/markdown", # 详细描述的文件类型
platforms='python3', # 项目支持的平台
url='https://www.cjlmonster.cn', # 项目主页
# 项目配置
# 包含所有src文件夹下的包,但排除tests包
packages=find_packages('src', exclude=['*.tests', '*.tests.*', 'tests.*', 'tests']),
package_dir={'': 'src'}, # find_packages指定了文件夹后,这里也需要配置
package_data={
# 任何包中含有.txt文件,都包含它
'': ['*.txt']
},
exclude_package_data={
# 忽略demo01包下的data文件夹里的abc.txt文件
'demo01': ['data/abc.txt']
},
# 支持Python版本
python_requires='>=3',
# 表明当前模块依赖哪些包,若环境中没有,则会从pypi中下载安装
install_requires=[
'flask >= 2.0.1',
'pillow >= 6.2.2, < 7.0.0'
],
# 用来支持自动生成脚本,如下配置
# 在类Unix系统下,会在 /usr/local/bin下生成 test1和test2 两个命令
# 在Windows系统下,会在当前Python环境下的 scripts 目录下生成 test1.exe和test2.exe
entry_points={
'console_scripts': [
'test1 = demo01.first:test1', # 入口指向demo01包下的first文件里的 test1 函数
'test2 = demo01.first:test2', # 入口指向demo01包下的first文件里的 test2 函数
],
}
)
编写完配合文件后,可以直接安装源码到本地环境
$ python setup.py install
测试阶段不想直接安装到本地的话,可以使用
$ python setup.py develop
这样不会直接,而是建立软链接,这样可以方便更新
上面开发完项目之后,编写setup.py打包配置文件,之后就可以使用setuptools打包了,这里打包为 wheel 格式的二进制文件,这是官方推荐,打开cmd,回到项目根目录下,输入如下命令打包:
$ python setup.py bdist_wheel
执行打包命令,会生成一些发布文件 其中 dist 目录下的 demo01-1.0.0-py3-none-any.whl 就是打包好的项目源码,查看它 直接安装到本地
$ pip install dist/demo01-1.0.0-py3-none-any.whl
测试是否生产脚本命令
项目开发好后,想分享给更多人使用时,打包后还需要上传到 PyPi (Python Package Index)上,它是 Python 官方维护的第三方包仓库,用于统一存储和管理开发者发布的 Python 包。
首先需要在 PyPi 上注册账号
然后在用户家目录下生成 ~/.pypirc 文件,并编写如下内容
[distutils]
index-servers = pypi
[pypi]
username:xxx
password:xxx
然后使用这条命令进行信息注册
$ python setup.py register
注册完了后,上传源码包
$ python setup.py upload
上面的发布是setuptools自带的,操作比较麻烦,想要简单点,可以使用 twine 发布工具,直接输入
$ twine upload dist/demo01-1.0.0-py3-none-any.whl
如果没有配置 ~/.pypirc 文件的话,接着需要输入账号秘密,有配置的话,直接就上传到 pypi
上传到 pypi 后,就可以在 pypi 上看到项目的信息了,并且可以使用 pip 进行安装使用
$ pip install demo01
主题色
主色
强调色